我的情况非常类似于错误"导入错误:DLL 加载失败:%1 不是有效的 Win32 应用程序">,但答案对我不起作用。
我的Python代码说:
import cv2
但是这一行抛出了这个问题标题中显示的错误。
我在这台 64 位机器上安装了 C:libopencv
的 OpenCV。我使用的是64位Python。
我的 PYTHONPATH 变量:PYTHONPATH=C:libopencvbuildpython2.7
。此文件夹包含cv2.pyd
仅此而已。
我的 PATH 变量:Path=%OPENCV_DIR%bin;...
此文件夹包含 39 个 DLL 文件,例如 opencv_core246d.dll
。
OPENCV_DIR具有以下值:OPENCV_DIR=C:libopencvbuildx64vc11
。
"导入错误: DLL 加载失败: %1 不是有效的 Win32 应用程序">中的解决方案说添加"新的 opencv 二进制文件路径 ( C:opencvbuildbinRelease
( 到 Windows PATH 环境变量"。但如上所示,我的 PATH 中已经有 OpenCV 二进制文件文件夹 ( C:libopencvbuildx64vc11bin
(。而且我的 OpenCV 安装没有任何发布文件夹(除了 build/java 下的空文件夹(。
什么问题?我可以告诉 Python 详细跟踪加载过程吗?它到底在寻找什么 DLL 文件?
我注意到,根据 http://www.dependencywalker.com/,C:libopencvbuildpython2.7
中的cv2.pyd
是32位的,而机器和我运行的Python是64位的。这可能是问题所在吗?如果是这样,我在哪里可以找到 64 位版本的 cv2.pyd?
用于 Python 扩展包的非官方 Windows 二进制文件
你可以从这里找到任何Python库。
请检查您使用的Python版本是否也是64位。如果不是,那么这可能是问题所在。您将使用32位Python版本,并为OpenCV库安装64位二进制文件。
哇,我发现了这个问题的另一个案例。以上都不起作用。最终,我使用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 尝试加载的文件。
就我而言,我有 64 位 Python,而 lxml 是错误的版本 - 我也应该使用它的 x64 版本。我通过在此处下载 64 位版本的 lxml 来解决此问题:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
这是解决一个令人沮丧的问题的最简单答案。
我刚刚遇到了这个问题。事实证明,这只是因为我使用的是 64 位版本的 OpenCV 文件。我尝试了x86,它起作用了。
我遇到了同样的问题。这是我所做的:
-
我从这里下载了pywin32轮文件,然后
-
我卸载了 pywin32 模块。若要卸载,请在命令提示符下执行以下命令。
pip uninstall pywin32
-
然后,我重新安装了pywin32。要安装它,请在 pywin32 wheel 文件所在的同一目录中打开命令提示符。然后执行以下命令。
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
。我按照此处提供的其余说明进行操作。
由其他人添加,未经验证:我还将文件cv2.pyd
复制到文件夹C:/Python27/Lib/site-packages/cv2
。它有效。
对我来说,问题是我在同一个Eclipse项目中使用了不同版本的Python。我的设置与项目属性和运行配置 Python 版本不一致。
在 PyDev → 的菜单 Project → Properties 中,我将解释器设置为 Python 2.7.11。
在→解释器的运行配置中,我使用的是默认解释器。将其更改为Python 2.7.11解决了该问题。
如果您的构建系统(在我的情况下为 CMake(将文件从 <name>.dll
复制到 <name>.pyd
,如果原始文件实际上不是 DLL 文件,您将收到此错误。就我而言,构建共享库被关闭了,因此底层文件实际上是一个*.lib
。
我通过在依赖沃克中加载pyd
文件并发现它无效来发现此错误。
更新 NumPy。
pip install numpy --upgrade
它对我有用!
对我有用:
pip install -- pywin32==227
使用 2.7 位 Windows 安装程序在我的系统上卸载并重新安装不同版本的 Python 时,我遇到了同样的问题。我在大多数导入语句上都遇到了相同的错误。
我卸载了新安装的Python,下载了一个64位Windows安装程序,再次重新安装Python,它工作了。
所以我在Windows下安装vtk时遇到了问题(因为我使用Python 3.7,到目前为止没有任何可用的二进制文件。仅适用于较旧的 Python 版本pip install vtk
不起作用(
我确实在我的cmd中编写了Python:
Python 3.7.3 on win32
所以我现在知道我在 32 位上运行 Python 3.7.3。
然后我在 VTK-8.2.0-cp37-cp37m-win32.whl 下载了正确的轮子
接下来我安装了那个轮子:
pip install VTK-8.2.0-cp37-cp37m-win32.whl
然后我测试了它,它起作用了:
python
import vtk
我在尝试编写有关语音转文本的代码时遇到了同样的问题。
解决方案非常简单。使用 pip 方法卸载以前的 pywin32
:pip uninstall pywin32
以上将删除默认用于 32 位计算机的现有版本。并再次安装
pip install pywin32
这将为您正在使用的64位计算机安装一个。
我在尝试运行 uvicorn,
时遇到了类似的问题创建一个新的虚拟环境并重新安装python软件包是有效的
您可以从官方网站或非官方网站安装opencv
。
使用的是 Anaconda
,请参阅此问题和此问题。
它有一个非常简单的解决方案。安装opencv
后地方
从C:opencvbuildpython2.7 **x64**
到C:Python27Libsite-packages
cv2.pyd
而不是将cv2.pyd
从C:opencvbuildpython2.7 **x86**
放置到C:Python27Libsite-packages
我在尝试导入MySQLdb时遇到此错误。
对我有用的是卸载Python,然后重新安装它。
安装 npm (https://www.npmjs.com/get-npm( 后出现错误。它做的一件事是安装Python,即使我已经拥有它。
首先,我将cv2.pyd
从/opencv/build/python/2.7/x86
复制到C:/Python27/Lib/site-packeges
。错误是
"运行时错误:针对 API 版本 9 编译的模块,但此版本的 numpy 是 7">
然后我安装了numpy-1.8.0-win32-superpack-python2.7.exe
,OpenCV工作正常。
>>> import cv2
>>> print cv2.__version__
2.4.13
- 请确保您已安装 Python 2.7.12 或更低版本。否则你肯定会得到这个错误。
- 如果操作系统为 64 位,请确保 Oracle 客户端已安装 64 位。
- 确保适用于 Python 2.7 的 Microsoft Visual C++ 编译器对于 64 位操作系统为 64 位,对于 32 位为 32 位。
注意:如果您的操作系统是 64 位,请安装 64 位的所有软件包,或者如果操作系统是 32 位,请安装 32 位软件包。
我有用。我尝试了不同的方法,但这是我最好的解决方案。
打开命令提示符并键入以下内容;
pip install opencv-python
(确保您的互联网连接已打开。
之后,尝试再次导入它。
也可能是你的 Anaconda 版本是 32 位,而它应该是 64 位。
如果您使用的是 pycharm,我会转到设置 -> python 解释并单击 + 按钮并在那里的 python 包列表中搜索名称一张图片显示了当您想要安装某些东西时该去哪里
我找到了解决方案。也许您可以尝试使用 cmd 窗口而不是 Anaconda 提示窗口来开始您的第一个 Scrapy 测试。