问题:ImportError:DLL加载失败:%1不是有效的Win32应用程序。但是DLL在那里
我的情况非常类似于ImportError上的情况:DLL加载失败:%1不是有效的Win32应用程序,但是答案对我不起作用。
我的Python代码说:
import cv2
但是该行引发了此问题标题中显示的错误。
我C:\lib\opencv
在这台64位计算机上安装了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加载失败:%1不是有效的Win32应用程序,表示要向C:\opencv\build\bin\Release
Windows PATH环境变量添加新的opencv二进制路径()。但是,如上所示,C:\lib\opencv\build\x64\vc11\bin
我的PATH中已经有OpenCV Binaries文件夹()。而且我的OpenCV安装没有任何Release文件夹(build / java下为空)。
关于出什么问题有什么想法吗?我可以告诉Python详细跟踪加载过程吗?究竟要寻找什么DLL?
谢谢,拉斯
编辑:
我只注意到,根据http://www.dependencywalker.com/中,cv2.pyd
在C:\lib\opencv\build\python\2.7
为32位,而我运行的机器和Python的是64位。可能是问题所在吗?如果是这样,我在哪里可以找到cv2.pyd的64位版本?
回答 0
适用于Python扩展程序包的非官方Windows二进制文件
您可以从这里找到任何python库
回答 1
请检查您使用的python版本是否也是64位。如果没有,那可能就是问题所在。您将使用32位python版本,并且已为OPENCV库安装了64位二进制文件。
回答 2
哇,我发现了这个问题的另一种情况。以上都不起作用。最终,我使用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尝试加载的文件。
回答 3
就我而言,我有64位python,而lxml是错误的版本-我也应该一直使用x64版本。我通过在此处下载lxml的64位版本来解决此问题:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
这是一个令人沮丧的问题的最简单答案。
回答 4
我只是遇到了这个问题,原来是因为我使用的是x64版本的opencv文件。尝试了x86,它起作用了。
回答 5
如果您的构建系统(在我的情况下为CMake)将文件从复制<name>.dll
到<name>.pyd
,则如果原始文件实际上不是dll,则会出现此错误。就我而言,构建共享库已关闭,因此基础文件实际上是一个*.lib
。
我通过将pyd
文件加载到DependencyWalker中并发现它无效而发现了此错误。
回答 6
我有同样的问题。这是我所做的:
我从这里下载pywin32 Wheel文件,然后
我卸载了pywin32模块。要卸载,请在命令提示符中执行以下命令。
pip uninstall pywin32
然后,我重新安装了pywin32。要安装它,请在pywin32 wheel文件所在的目录中打开命令提示符。然后执行以下命令。
pip install <Name of the wheel file with extension>
车轮文件将类似于:piwin32-XXX-cpXX-none-win32.whl
它为我解决了问题。您可能还想尝试一下。希望它也对您有用。
回答 7
我cv2.pyd
从/opencv/build/python/2.7/x86
文件夹而不是从/x64
文件夹复制文件到C:/Python27/Lib/site-packeges
。我按照此处提供的其余说明进行操作。
由其他人添加,未经验证:我还复制了文件 cv2.pyd
到folder C:/Python27/Lib/site-packages/cv2
。有用。
回答 8
对我来说,问题是我在同一个 Eclipse项目中使用了不同版本的Python 。我的设置与“ 项目属性”和“ 运行配置” Python版本不一致。
在项目>属性> PyDev中,将解释器设置为Python2.7.11。
在“运行配置”>“解释器”中,我正在使用“默认解释器”。将其更改为Python 2.7.11可解决此问题。
回答 9
当我使用32位Windows Installer在系统上卸载并重新安装其他版本的2.7.x Python时,遇到了相同的问题。我的大多数导入语句都出现相同的错误。我卸载了新安装的Python,然后下载了64位Windows安装程序,然后再次重新安装了Python,它可以正常工作。希望对您有帮助。
回答 10
所以我在Windows下安装vtk时遇到问题(由于我使用python 3.7,到目前为止,仅适用于较旧的python版本,没有可用的二进制文件pip install vtk无法正常工作)
我确实在cmd中编写了python:
Python 3.7.3 on win32
所以我现在知道我的python 3.7.3在32位上运行。
然后,我在下载了正确的车轮 VTK-8.2.0-cp37-cp37m-win32.whl
接下来,我安装了该轮子:
pip install VTK-8.2.0-cp37-cp37m-win32.whl
然后,我对其进行了测试并成功运行:
python
import vtk
回答 11
更新numpy。
pip install numpy --upgrade
为我工作!
回答 12
首先,我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
回答 13
回答 14
- 请确保您已安装python 2.7.12或更低版本,否则您肯定会收到此错误。
- 如果操作系统为64位,请确保已安装64位Oracle客户端。
- 确保用于Python 2.7的Microsoft Visual C ++编译器对于64位Os为64位,对于32位为32位。注意:-如果您的操作系统是64位,则安装所有64位软件包;如果操作系统是32位,则安装32位软件包。
回答 15
它有一个非常简单的解决方案。安装后的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
回答 16
尝试导入MySQLdb时出现此错误。
对我有用的是卸载Python,然后重新安装。
安装npm(https://www.npmjs.com/get-npm)后出现错误。它所做的一件事是即使我已经安装了Python,也要安装它。
回答 17
这对我有用。我尝试了不同的方法,但这是我最好的解决方案。
打开命令提示符并键入以下内容;
pip install opencv-python
。(确保您的互联网已打开)。之后,请尝试再次导入。
回答 18
这个跟我一起工作
pip install -- pywin32==227
回答 19
我找到了解决方案,也许您可以尝试使用cmd窗口而不是anaconda提示窗口来开始您的第一笔测试。