我的情况很像ImportError: DLL load failed: %1 is not a valid Win32 application的情况,但那里的答案对我不起作用。
我的Python代码说:
import cv2
但是这一行抛出了这个问题标题中显示的错误。
我在这台64位机器上的C:\lib\opencv
中安装了OpenCV。我使用的是64位Python。
我的PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7
。这个文件夹包含cv2.pyd
,仅此而已。
我的PATH变量:Path=%OPENCV_DIR%\bin;...
此文件夹包含39个opencv_core246d.dll
等DLL文件。
OPENCV_DIR具有以下值:OPENCV_DIR=C:\lib\opencv\build\x64\vc11
。
ImportError: DLL load failed: %1 is not a valid Win32 application的解决方案是将“新的opencv二进制路径(C:\opencv\build\bin\Release
)添加到Windows path环境变量中”。但是如上所述,我的路径中已经有了OpenCV二进制文件夹(C:\lib\opencv\build\x64\vc11\bin
)。而且我的OpenCV安装没有任何发布文件夹(除了build/java下的一个空文件夹)。
你知道哪里出问题了吗?我可以让Python详细跟踪加载过程吗?DLL到底在寻找什么?
谢谢,拉斯
编辑:
我刚刚注意到,根据http://www.dependencywalker.com/的说法,C:\lib\opencv\build\python\2.7
中的cv2.pyd
是32位的,而我运行的机器和Python是64位的。这会是问题所在吗?如果是这样的话,我在哪里可以找到cv2.pyd的64位版本?
发布于 2013-09-27 11:00:50
Unofficial Windows Binaries for Python Extension Packages
您可以在这里找到任何python库。
发布于 2014-08-20 14:45:11
请检查您使用的python版本是否也是64位。如果不是,那么这可能就是问题所在。您将使用32位python版本,并为OPENCV库安装了64位二进制文件。
发布于 2016-08-09 08:38:56
哇,我又找到了一个解决这个问题的例子。上述方法都不起作用。最终,我使用了python的能力来内省正在加载的内容。对于python 2.7,这意味着:
import imp
imp.find_module("cv2")
这在Anaconda DLL目录中出现了一个完全意想不到的"cv2.pyd“文件,该文件未被多次卸载/安装尝试触及。Python首先在那里查找,但没有找到我良好的安装。我删除了cv2.pyd文件并再次尝试imp.find_module(" cv2 "),python立即找到了正确的文件,cv2开始工作。
因此,如果其他解决方案都不适用于您,请确保使用python内省来查看python试图加载的文件。
https://stackoverflow.com/questions/19019720
复制相似问题