openvino踩坑记(ImportError: DLL load failed while importing ie_api)

        最近捣腾了一下windows版的openvino,发现这玩意有坑,不过网上踩坑的好像不多,相关的信息也较少。

        事情是这样的,一开始我去官网下载exe安装包,具体的选择如下,

安装之后会存在指定的文件夹中,

并在这个文件夹中找到Intel\openvino_2021\deployment_tools\model_optimizer\install_prerequisites这个路径,在该路径下有几个bat文件

这几个bat文件就是帮你配置环境的,我用的是onnx所以控制台运行的是install_prerequisites_onnx.bat,运行完之后在\Intel\openvino_2021\bin这个路径下的bat文件也要在控制台运行,

        运行完了会和你说环境初始化完成。

        但是实际上运行的时候还是会报错,提示:ImportError: DLL load failed while importing ie_api: 找不到指定的模块。

Traceback (most recent call last):
  File "F:/DLproject/YOLOX-main/demo/OpenVINO/python/openvino_inference.py", line 15, in <module>
    from openvino.inference_engine import IECore
  File "E:\ProgramData\Anaconda3\envs\yolo\lib\site-packages\openvino\inference_engine\__init__.py", line 31, in <module>
    from .ie_api import *
ImportError: DLL load failed while importing ie_api: 找不到指定的模块。

         然后上网一通找,基本操作就是按上面的再来一遍,我再来一遍之后还是报同样的错。在环境变量中添加项目路径也还是找不到这个指定模块。 

        之后根据官方的pip方式,在自己的环境下运行下列指令:

python -m pip install --upgrade pip
pip install openvino
pip install openvino-dev[onnx]==2021.4.2

         不出意外的还是出意外了,还是和上面的错误一样,最后无奈,路径问题就是比较麻烦,只能改一下代码

        在__init__.py文件中的对应位置加上:

os.environ['PATH'] = os.path.abspath(lib_path) + ';' + os.environ['PATH']

         具体如下:

# -*- coding: utf-8 -*-
# Copyright (C) 2018-2021 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

import os
import sys

if sys.platform == 'win32':
    # Installer, yum, pip installs openvino dlls to the different directories
    # and those paths need to be visible to the openvino modules
    #
    # If you're using a custom installation of openvino,
    # add the location of openvino dlls to your system PATH.
    #
    # looking for the libs in the pip installation path by default.
    openvino_libs = [os.path.join(os.path.dirname(__file__), '..', '..', 'openvino', 'libs')]
    # setupvars.bat script set all libs paths to OPENVINO_LIB_PATHS environment variable.
    openvino_libs_installer = os.getenv('OPENVINO_LIB_PATHS')
    if openvino_libs_installer:
        openvino_libs.extend(openvino_libs_installer.split(';'))
    for lib in openvino_libs:
        lib_path = os.path.join(os.path.dirname(__file__), lib)
        if os.path.isdir(lib_path):
            # On Windows, with Python >= 3.8, DLLs are no longer imported from the PATH.
            if (3, 8) <= sys.version_info:
                os.add_dll_directory(os.path.abspath(lib_path))
                # 加上这句
                os.environ['PATH'] = os.path.abspath(lib_path) + ';' + os.environ['PATH']
            else:
                os.environ['PATH'] = os.path.abspath(lib_path) + ';' + os.environ['PATH']

from .ie_api import *

__all__ = ['IENetwork', 'TensorDesc', 'IECore', 'Blob', 'PreProcessInfo', 'get_version']
__version__ = get_version()  # type: ignore

        之后问题解决,可以正常进行模型推理。

        推理时的日志信息

猜你喜欢

转载自blog.csdn.net/athrunsunny/article/details/123719031