我的情况与ImportError: DLL load failed: %1 is not a valid Win32 application的情况非常相似,但答案对我不起作用 .
我的Python代码说:
import cv2
但该行抛出了此问题 Headers 中显示的错误 .
我在这台64位机器上的 C:\lib\opencv
中安装了OpenCV . 我正在使用64位Python .
我的PYTHONPATH变量: PYTHONPATH=C:\lib\opencv\build\python\2.7
. 这个文件夹包含 cv2.pyd
,就是这样 .
我的PATH变量: Path=%OPENCV_DIR%\bin;...
此文件夹包含39个DLL文件,例如 opencv_core246d.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环境变量” . 但是如上所示,我的PATH中已经有了OpenCV二进制文件夹( C:\lib\opencv\build\x64\vc11\bin
) . 我的OpenCV安装没有任何Release文件夹(build / java下的空文件夹除外) .
关于出了什么问题的任何想法?我可以告诉Python详细跟踪加载过程吗?究竟是什么DLL正在寻找?
谢谢,拉尔斯
编辑:
我刚注意到,根据http://www.dependencywalker.com/, C:\lib\opencv\build\python\2.7
中的 cv2.pyd
是32位,而我运行的机器和Python是64位 . 这可能是问题吗?如果是这样,我在哪里可以找到64位版本的cv2.pyd?
15 回答
对我来说问题是我在同一个Eclipse项目中使用不同版本的Python . 我的设置与Project Properties和Run Configuration Python版本不一致 .
在Project> Properties> PyDev中,我将Interpreter设置为Python2.7.11 .
在运行配置>解释器中,我使用的是默认解释器 . 将其更改为Python 2.7.11修复了问题 .
当我使用32位Windows Installer在我的系统上卸载并重新安装不同版本的2.7.x Python时,我遇到了同样的问题 . 我也一样我的大多数import语句都出错了 . 我卸载了新安装的Python并下载了64位Windows安装程序并重新安装了Python并且它运行正常 . 希望这对你有所帮助 .
在我的情况下,我有64位python,而lxml是错误的版本 - 我本来应该使用它的x64版本 . 我在这里通过下载64位版本的lxml来解决这个问题:
https://pypi.python.org/pypi/lxml/3.4.1
这是令人沮丧的问题的最简单答案 .
我只是遇到了这个问题,它只是因为我使用的是x64版本的opencv文件 . 尝试了x86,它运作良好 .
如果您的构建系统(在我的情况下为CMake)将文件从
<name>.dll
复制到<name>.pyd
,如果原始文件实际上不是dll,则会出现此错误 . 在我的例子中,构建共享库已关闭,因此底层文件实际上是*.lib
.我通过在DependencyWalker中加载
pyd
文件并发现它无效来发现此错误 .首先,我将
cv2.pyd
从/opencv/build/python/2.7/x86
复制到C:/Python27/Lib/site-packeges
. 错误是然后我安装
numpy-1.8.0-win32-superpack-python2.7.exe
并且opencv工作正常 .我有同样的问题 . 这是我做的:
我从here下载了pywin32 Wheel文件,然后
我卸载了 pywin32 模块 . 要卸载,请在“命令提示符”中执行以下命令 .
pip uninstall pywin32
pip install <Name of the wheel file with extension>
轮盘文件如下: piwin32-XXX-cpXX-none-win32.whl它解决了我的问题 . 您可能还想尝试一下 . 希望它也适合你 .
我将
cv2.pyd
文件从/opencv/build/python/2.7/x86
文件夹而不是从/x64
文件夹复制到C:/Python27/Lib/site-packeges
. 我按照提供的其他说明here .由其他人添加,未经验证:我还将文件
cv2.pyd
复制到文件夹C:/Python27/Lib/site-packages/cv2
. 有用 .Unofficial Windows Binaries for Python Extension Packages
你可以从这里找到任何python库
请检查您使用的python版本是否也是64位 . 如果没有,则可能是问题 . 你将使用32位python版本,并为OPENCV库安装了64位二进制文件 .
哇,我发现了另一个这个问题的案例 . 以上都没有奏效 . 最终我使用python的能力来反省被加载的内容 . 对于python 2.7,这意味着:
这在Anaconda DLL目录中发现了一个完全出乎意料的“cv2.pyd”文件,该文件未被多次卸载/安装尝试触及 . Python首先在那里看,没有找到我的好装置 . 我删除了那个cv2.pyd文件并再次尝试了imp.find_module(“cv2”),python立即找到了正确的文件并且cv2开始工作 .
因此,如果其他解决方案都不适合您,请确保使用python内省来查看python尝试加载的文件 .
您可以从official或unofficial站点安装
opencv
.如果您使用
Anaconda
,请参阅this问题和this问题 .请确保您已安装python 2.7.12或更低版本,否则您肯定会收到此错误 .
如果OS为64位,请确保Oracle客户端是64位安装的 .
确保Microsoft Visual C ++ for Python 2.7对于64位Os为64位或对32位为32位 . 注意: - 如果您的操作系统是64位安装所有64位包或如果Os是32位安装32位包 .
它有一个非常简单的解决方案 . 安装
opencv
之后cv2.pyd
从C:\opencv\build\python\2.7\ **x64**
到C:\Python27\Lib\site-packages
而不是将
cv2.pyd
从C:\opencv\build\python\2.7\ **x86**
放到C:\Python27\Lib\site-packages
我找到了解决方案,也许您可以尝试使用cmd窗口而不是anaconda提示窗口来启动您的第一次scrapy测试 .