ImportError:DLL加载失败:%1不是有效的Win32应用程序。 但是DLL在那里
我有一个非常像ImportError的情况:DLL加载失败:%1不是有效的Win32应用程序 ,但答案有没有为我工作。
我的Python代码说:
import cv2
但是,该行会引发此问题标题中显示的错误。
我在这台64位机器上安装了C:\lib\opencv
OpenCV。 我正在使用64位的Python。
我的PYTHONPATHvariables: PYTHONPATH=C:\lib\opencv\build\python\2.7
。 这个文件夹包含cv2.pyd
,这就是全部。
我的PATHvariables: Path=%OPENCV_DIR%\bin;...
此文件夹包含39个DLL文件,如opencv_core246d.dll
。
OPENCV_DIR具有以下值: OPENCV_DIR=C:\lib\opencv\build\x64\vc11
。
ImportError:DLL加载失败的解决scheme:%1不是一个有效的Win32应用程序说要将新的opencv二进制文件path( C:\opencv\build\bin\Release
)添加到Windows PATH环境variables中。 但是如上所示,我的PATH中已经有了OpenCV二进制文件夹( C:\lib\opencv\build\x64\vc11\bin
)。 而我的OpenCV安装没有任何发布文件夹(build / java下的空白文件除外)。
任何想法是什么问题? 我可以告诉Python详细追踪加载过程吗? 究竟是什么DLL寻找?
谢谢,拉尔斯
编辑:
我只注意到,根据http C:\lib\opencv\build\python\2.7
cv2.pyd
C:\lib\opencv\build\python\2.7
的cv2.pyd
是32位,而我正在运行的机器和Python是64位的。 这可能是问题吗? 如果是这样,我在哪里可以find一个64位版本的cv2.pyd?
Python扩展包的非官方Windows二进制文件
你可以从这里find任何的Python库
请检查您使用的Python版本是否也是64位。 如果不是,那么这可能是问题。 您将使用一个32位的Python版本,并将为OPENCV库安装一个64位二进制文件。
我只是有这个问题,它只是因为我使用的OpenCV文件的x64版本。 试过x86和它的工作。
哇,我发现了另外一个这样的问题。 以上都没有奏效。 最终我用python的能力来反思什么被加载。 对于Python 2.7这意味着:
import imp imp.find_module("cv2")
这在Anaconda DLL目录中出现了一个完全意外的“cv2.pyd”文件,这个文件没有被多个卸载/安装尝试所触及。 Python首先在那里看,没有find我的好安装。 我删除了那个cv2.pyd文件并且再次尝试了imp.find_module(“cv2”)并且python立刻find了正确的文件并且cv2开始工作。
所以,如果没有其他的解决scheme为您工作,请确保您使用python introspection来查看python试图加载什么文件。
在我的情况下,我有64位的Python,它是lxml是错误的版本 – 我应该一直在使用它的x64版本。 我通过下载64位版本的lxml解决了这个问题:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
这是一个令人沮丧的问题的最简单的答案。
我从/opencv/build/python/2.7/x86
文件夹而不是从/x64
文件夹复制cv2.pyd
文件到C:/Python27/Lib/site-packeges
。 我遵循这里提供的其他说明。
对我来说,问题是我在同一个 Eclipse项目中使用了不同版本的Python。 我的设置与“ 项目属性”和“ 运行configuration” Python版本不一致。
在Project> Properties> PyDev中 ,我将Interpreter设置为Python2.7.11。
在运行configuration>解释器中 ,我正在使用默认解释器。 将其更改为Python 2.7.11修复了这个问题。
如果你的构build系统(在我的情况下,CMake)从<name>.dll
文件复制到<name>.pyd
,如果原始文件实际上不是一个DLL,你会得到这个错误。 在我的情况下,build立共享库被closures,所以底层文件实际上是*.lib
。
我发现这个错误是通过在DependencyWalker中加载pyd
文件并发现它是无效的。
我有同样的问题。 以下是我所做的:
-
我从这里下载了pywin32 Wheel文件,然后
-
我卸载了pywin32模块。 要卸载在命令提示符下执行以下命令。
pip uninstall pywin32
-
然后,我重新安装pywin32 。 要安装它,请打开pywin32 wheel文件所在目录下的命令提示符。 然后执行以下命令。
pip install <Name of the wheel file with extension>
wheel文件将如下所示: piwin32-XXX-cpXX-none-win32.whl
它解决了我的问题。 你也可以试试看。 希望它也适合你。
当我在我的系统上使用32位Windows安装程序卸载并重新安装不同版本的2.7.x Python时,我遇到了同样的问题。 我的大部分导入语句都有同样的错误。 我卸载了新安装的Python,并下载了一个64位的Windows安装程序,并重新安装了Python,它工作。 希望这可以帮助你。
首先,我将cv2.pyd
从/opencv/build/python/2.7/x86
复制到C:/Python27/Lib/site-packeges
。 错误是
“RuntimeError:针对API版本9编译的模块,但是这个版本的numpy是7”
然后我安装了numpy-1.8.0-win32-superpack-python2.7.exe
和opencv工作正常。
>>> import cv2 >>> print cv2.__version__ 2.4.13
您可以从官方或非官方网站安装opencv
。
如果您使用的是Anaconda
请参考这个问题和这个问题。
- 请确保你已经安装了Python 2.7.12或以下的版本,否则你将会得到这个错误。
- 如果OS是64位,请确保安装了Oracle客户端64位。
- 确保用于Python 2.7的Microsoft Visual C ++编译器对于64位Os是64位,对于32位是32位。 注意: – 如果你的操作系统是54位安装所有包的64位或者如果是32位安装32位软件包。
我find了解决scheme,也许你可以尝试使用cmd窗口而不是anaconda提示窗口来启动你的第一个scrapytesting。