【问题标题】:ImportError: DLL load failed: The specified procedure could not be found. PythonImportError:DLL 加载失败:找不到指定的过程。 Python
【发布时间】:2014-03-06 10:18:20
【问题描述】:

最近,我安装了当前版本的 Python(x,y) 包 (2.7.6.0),现在当我运行我的 python 代码时,它显示一个错误:

Traceback (most recent call last):
File "D:\Projects\comparison\Lagebestimmung\main.py", line 11,   in <module>
import cv2
ImportError: DLL load failed: The specified procedure could not be found.

我在安装过程中正确选择了 opencv 模块。

另外,我以前在我的计算机上安装过旧版本的 Python(x,y),我在安装新版本之前将其卸载。在那个版本中,没有这样的问题。

【问题讨论】:

  • 您将cv2.pyd 复制到site-packages 目录中??
  • @PriyankPatel,嗨,不。我没有。但是你能解释一下它是什么吗?因为我仍然记得我安装旧版本的 Python(x,y) (我已经卸载了)的时间。我不需要将此“cv2.pyd”配置或复制到“站点包”中。谢谢。

标签: python pythonxy


【解决方案1】:
  1. 在“site-packages”中的 cv2.pyd 上使用 Dependency Walker (http://www.dependencywalker.com/)。
  2. 查看左上角,库树所在的位置。
  3. 普通库有蓝色或灰色图标,找到左侧有红色图标的库,如下所示:http://i.stack.imgur.com/YiEuD.png
  4. 找到带有红色标志的 API 并记住带有红色图标的库的 库名称。红旗表示父库需要一些底层库中不存在的 API。在我的例子中,带有红色图标的库是“kernel32.dll”,它的父库是 msvcr90.dll、tbb.dll 和来自“winsxs”的库,其名称是模糊的。
  5. 通常可以通过获取正确版本的父库来解决问题。 例如,您尝试在 Windows XP 上使用为 Windows Vista 编译的 DLL。此 DLL 导入了一个“InitializeCriticalSectionEx”API,Windows XP 的“kernel32.dll”中没有该 API。获取 DLL 的 XP 版本或使用“InitializeCriticalSection”而不是“Ex”重新编译它可以解决问题。 另一个示例:您正在使用编译为与 Qt 4.8.4 和 PyQt4 一起使用的 OpenCV,其中包含 Qt 版本 4.7。 cv2.pyd(顺便说一句,这是一个 DLL)将拒绝导入,因为 OpenCV 中所需的某些 Qt API 在 4.7 的 DLL 中不可用。解决方案是将 Qt 库版本 4.8.4 放入您的 '%PYTHONHOME%\Lib\site-packages\PyQt4' 文件夹或 PATH。在从 git repo 构建自己的 OpenCV 版本时,我自己也遇到了这个问题。

【讨论】:

    【解决方案2】:

    对于使用 python 3 的程序员,下载一个 wheel 包以安装 OpenCV。

    您需要确保已安装 NumPy。 Anaconda 是一个很好的包来处理依赖关系。你会得到 numpy 开箱即用。

    然后,从 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载与您的 Python 安装版本对应的 OpenCV 版本

    你可以通过运行找到你的 Python 解释器的版本:

    python --version
    

    在我运行 C-Python 3.5 时,我选择了: opencv_python‑3.2.0‑cp35‑cp35m‑win_amd64.whl

    最后,在你下载了wheel包的目录下,运行:

    pip install opencv_python-3.X.X-cpXX-cpXXm-xxxx.whl
    

    【讨论】:

    • 在 Python 3.6 和 OpenCV 3.3.0 上使用 Anaconda3 (5.0.0)/Windows 10 在 SO 和其他网站上挖掘了 4 个小时后,卸载所有内容并重新安装所有内容,这就是答案这使得opencv工作。即使在尝试替换文件python3.dll 时,使用 conda 从 conda-forge 安装 opencv 对我也不起作用,正如关于 SO 的许多问题中所建议的那样。
    【解决方案3】:

    试试这个: 为 windows 安装 opencv。在这里下载:

    http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.1/OpenCV-2.4.1.exe/download
    

    然后

     Copy cv2.pyd from C:\opencv\build\python\x86\2.7\ and paste it in the folder python site-packages folder . restart your IDE. 
    

    确保已安装 numpy。如果没有,请从这里获取..

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
    

    【讨论】:

    • 您好,再次感谢您的帮助。但是,正如我告诉你的,当你安装 Python(x,y) 时,它会询问你想要安装的模块/包/组件。在那里你可以选择 Opencv。我想没有必要再次安装它。此外,我检查了站点包,并且已经存在这个文件“cv2.pyd”。
    • 如果您在 64 位上安装了 python 并且扩展被编译为 32 位,则可能会出现 dll 错误...
    • 嗨,我解决了这个问题。我刚刚安装了 Python(x,y) 的另一个版本 (2.7.5.0):它工作正常。
    • 您的回答确实对运行 python 3 的人有所帮助...该软件包仍然针对运行 python 2 的人。
    【解决方案4】:

    我遇到了同样的问题,当我使用 ipython [如果你安装了 ipython,只需在 cmd 中编写 ipython] 就可以了。

    【讨论】:

      【解决方案5】:

      以下内容对我有用。假设安装了 Python(X,Y)(并且在安装开始时检查了 OpenCV 的选项),我执行了以下步骤:

      1. 下载opencv-2.4.13,解压到指定文件夹。
      2. 复制文件“cv2.pyd”(这是一个10MB的文件)
      3. 替换“...\Lib\site-packages”文件夹中的文件 cv2.pyd。您会注意到原始的“cv2.pyc”文件大小低于 2MB。
      4. 启动 Python(x,y) 和 Spyder。在 Python 控制台中输入“cv2.version”。你可能会得到 >>> cv2.version -> '2.4.13'
      5. OpenCV 正在运行!

      【讨论】:

        猜你喜欢
        • 2017-11-16
        • 1970-01-01
        • 2019-03-18
        • 2020-10-13
        • 2014-08-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        相关资源
        最近更新 更多