【问题标题】:Import CV2: DLL load failed (Python in Windows 64bit)导入 CV2:DLL 加载失败(Windows 64 位中的 Python)
【发布时间】:2016-03-07 00:43:26
【问题描述】:

ImportError: DLL 加载失败:%1 不是有效的 Win32 应用程序

有谁知道如何解决这个问题?当我尝试导入 cv2 时会出现此问题。我的笔记本是64位的,安装了64位的python,我也把cv2.pyd文件放到了python的site-packages文件夹中。

我的PYTHONPATH 值 = C:\Python35;C:\Python35\DLLs;C:\Python35\Lib;C:\Python35\libs;C:\Users\CV\OpenCV\opencv\build\python\2.7\x64;%OPENCV_DIR%\bin;

我的OPENCV_DIR 值 = C:\Users\CV\OpenCV\opencv\build\x64\vc12

我还通过将**%PYTHONPATH%;%PYTHONPATH%\Scripts\;%OPENCV_DIR%;** 将我的pythonpath 和我的opencv_dir 引用到PATH 中

我还通过 pip install 和命令行安装了 opencv_python-3.0.0+contrib-cp35-none-win_amd64。

这些都没有解决我的问题。

【问题讨论】:

  • 您的“python 路径”是指系统PATH 还是PYTHONPATH?其中一些目录(例如 DLL、Lib、libs)应该不在这些环境变量中。
  • @eryksun 我编辑了我的问题,是的,它在 PATH 中被引用
  • 不要在您的PYTHONPATH 中包含C:\Python35;C:\Python35\DLLs;C:\Python35\Lib;C:\Python35\libs。它也不应该有任何包含特定于实现模块的目录,例如C:\Users\CV\OpenCV\opencv\build\python\2.7\x64——因为PYTHONPATH 没有版本控制。我也怀疑 %OPENCV_DIR%\bin 是否包含 Python 模块。可能需要它位于系统 PATH 上以查找 DLL。
  • 如果你安装了Gohlke's build,它包含了除了cv2.cp35-win_amd64.pyd之外的所有必需的DLL,所以你不应该做任何其他事情。删除您所做的所有其他事情,因为如果 Python 在 sys.path 上找到错误版本的 cv2,它只会妨碍并导致问题。如果必须,从全新安装 Python 开始,并清理系统 PATH 以删除对 OpenCV 目录的所有引用。
  • 啊,我看到 Gohlke 的 cv2.cp35-win_amd64.pyd 依赖于 C++ 运行时库 MSVCP140.dll。那是你需要的DLL吗? Python 3.5 的安装程序不包含此 DLL,因此在这种情况下,您可能必须安装 VC++ 2015 redistributable package

标签: python windows opencv dll 64-bit


【解决方案1】:

为将来来这里的人(比如我)提供更详细的答案:

  1. 卸载 opencv-python,例如通过pip uninstall opencv-python
  2. 卸载所有 Visual Studio C++ 包
  3. microsoft 下载新的 Visual Studio 并安装
  4. gohlke 下载匹配的python whl 并使用例如安装pip install opencv-python-3.2.0+contrib
  5. 现在它应该可以工作了...

【讨论】:

    【解决方案2】:

    (发布@eryksun 评论作为社区答案以防止系统自动删除问题)

    Gohlke's cv2.cp35-win_amd64.pyd 依赖于 MSVCP140.dll,C++ 运行时库。

    那是您需要的 DLL 吗?

    Python 的安装程序 3.5 不包含此 DLL,因此在这种情况下,您可能必须安装 VC++ 2015 redistributable package

    【讨论】:

      【解决方案3】:

      如果您使用的是 Windows 10 N 发行版,则可能会发生这种情况,N 发行版未预安装 Windows 媒体功能包,这是 OpenCV 3.4 版及更高版本之后所必需的。

      首选的解决方案是将功能包安装在:https://www.microsoft.com/en-us/software-download/mediafeaturepack

      请谨慎选择适用于您当前 Windows 版本的版本。

      如果这不是一个选项,请回退到没有 dll 依赖项的早期版本的 OpenCV,您可以这样做:pip install opencv-python=3.3.0.9

      自从windows推出N版以来,这个问题在很多地方都出现过,并且对windows环境有很多影响,确定你是否有这个问题的最快方法是在Edge浏览器中打开youtube,如果它显示HTML5媒体没有找到插件,就是这个问题。

      如果问题仍然存在,请安装依赖遍历器并找出导致依赖中断的模块。

      【讨论】:

        【解决方案4】:

        在这种情况下,我只需将文件“python3.dll”从我的 python3 安装文件夹复制到我的 virtualenv lib 文件夹,然后它就可以工作了。

        【讨论】:

          猜你喜欢
          • 2017-07-03
          • 2019-01-16
          • 2016-01-16
          • 1970-01-01
          • 1970-01-01
          • 2019-02-20
          • 2020-01-01
          • 2018-08-13
          • 2019-10-09
          相关资源
          最近更新 更多