ImportError: DLL加载失败:找不到指定的过程。Python
最近,我安装了一个最新版本的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),在安装新版本之前我把它卸载了。在那个旧版本中,没有出现这样的错误。
5 个回答
0
以下步骤对我有效。假设你已经安装了Python(X,Y),并且在安装时选择了OpenCV这个选项,我按照以下步骤操作:
- 下载opencv-2.4.13,并把文件解压到一个文件夹里。
- 复制文件“cv2.pyd”(这个文件大约10MB)。
- 把“cv2.pyd”文件替换到“...\Lib\site-packages”文件夹里。你会发现原来的“cv2.pyc”文件大小不到2MB。
- 启动Python(x,y)和Spyder。在Python控制台输入“cv2.version”。你应该会看到 >>> cv2.version -> '2.4.13'
- 现在OpenCV就可以正常工作了!
0
我也遇到过同样的问题,当我使用ipython时(如果你安装了ipython,只需在命令行输入ipython),它就能正常工作了。
1
试试这个:
在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
2
对于使用 Python 3 的程序员来说,首先需要下载一个轮子包(wheel package)来安装 OpenCV。
你需要确保已经安装了 NumPy。Anaconda 是一个很好的工具,可以帮助你管理这些依赖关系,使用它的话,NumPy 会自动安装好。
接下来,从这个网址下载与你的 Python 版本相对应的 OpenCV 版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/
你可以通过运行以下命令来查看你的 Python 解释器的版本:
python --version
比如我使用的是 C-Python 3.5,所以我选择了:
opencv_python‑3.2.0‑cp35‑cp35m‑win_amd64.whl
最后,在你下载了轮子包的目录下,运行:
pip install opencv_python-3.X.X-cpXX-cpXXm-xxxx.whl
11
- 使用依赖项查看器(Dependency Walker),可以在这个网站找到:http://www.dependencywalker.com/,去查看你从'site-packages'文件夹里找到的cv2.pyd文件。
- 在左上角的位置,你会看到一个库的树状图。
- 正常的库图标是蓝色或灰色的,找找左边那些红色图标的库,像这样:https://i.stack.imgur.com/YiEuD.png。
- 找到那些有红色标记的API,并记住那些红色图标库的父库名称。红色标记意味着父库需要某些API,但在底层库中找不到。在我的例子里,红色图标的库是'kernel32.dll',它的父库是msvcr90.dll、tbb.dll,还有一个名字模糊的来自'winsxs'的库。
- 通常,问题可以通过获取正确版本的父库来解决。比如,你试图在Windows XP上使用一个为Windows Vista编译的DLL,这个DLL需要一个在Windows XP的'kernel32.dll'中不存在的'InitializeCriticalSectionEx' API。获取XP版本的DLL或者用'InitializeCriticalSection'替代'Ex'重新编译就能解决问题。再比如,你在使用为Qt 4.8.4和PyQt4编译的OpenCV,而这个版本的Qt是4.7。cv2.pyd(顺便说一下,这也是一个DLL)会拒绝导入,因为在4.7的DLL中缺少OpenCV所需的某些Qt API。解决办法是把Qt 4.8.4的库放到你的'%PYTHONHOME%\Lib\site-packages\PyQt4'文件夹或者PATH里。我自己在从git仓库构建OpenCV的过程中也遇到过这个问题。