ImportError: DLL 加载失败:%1 不是有效的 Win32 应用程序。但 DLL 在那里
- 2025-01-08 08:50:00
- admin 原创
- 187
问题描述:
我遇到的情况非常类似于错误“ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序”的情况,但是那里的答案对我来说不起作用。
我的 Python 代码显示:
import cv2
但是该行引发了该问题标题中显示的错误。
C:libopencv
我在这台 64 位机器上安装了 OpenCV 。我使用的是 64 位 Python。
我的 PYTHONPATH 变量:PYTHONPATH=C:libopencvuildpython.7
。此文件夹包含cv2.pyd
,仅此而已。
我的 PATH 变量:Path=%OPENCV_DIR%in;...
此文件夹包含 39 个 DLL 文件,例如opencv_core246d.dll
。
OPENCV_DIR 具有此值:OPENCV_DIR=C:libopencvuildx64c11
。
错误“ImportError: DLL 加载失败: %1 不是有效的 Win32 应用程序”的解决方案要求将“新的 opencv 二进制文件路径 ( C:opencvuildinRelease
) 添加到 Windows PATH 环境变量”。但如上所示,C:libopencvuildx64c11in
我的 PATH 中已经有 OpenCV 二进制文件文件夹 ( )。而且我的 OpenCV 安装没有任何 Release 文件夹(除了build/java下的一个空文件夹)。
出了什么问题?我可以让 Python 详细跟踪加载过程吗?它到底在寻找什么 DLL 文件?
我注意到,根据http://www.dependencywalker.com/,cv2.pyd
inC:libopencvuildpython.7
是 32 位的,而我正在运行的机器和 Python 是 64 位的。这可能是问题所在吗?如果是这样,我在哪里可以找到 64 位版本的 cv2.pyd?
解决方案 1:
Python 扩展包的非官方 Windows 二进制文件
您可以从这里找到任何 Python 库。
解决方案 2:
请检查您使用的 Python 版本是否也是 64 位。如果不是,那么问题可能就出在这里。您将使用 32 位 Python 版本,并为 OpenCV 库安装 64 位二进制文件。
解决方案 3:
哇,我又发现了这个问题的另一个案例。以上方法都不起作用。最后我使用了 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 正在尝试加载什么文件。
解决方案 4:
就我而言,我使用的是 64 位 Python,而lxml版本不对——我也应该使用 x64 版本。我通过在此处下载 64 位版本的 lxml 解决了这个问题:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
这是对一个令人沮丧的问题的最简单的答案。
解决方案 5:
我刚刚遇到了这个问题。原来这是因为我使用的是 64 位版本的 OpenCV 文件。我尝试了 x86,成功了。
解决方案 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
到文件夹C:/Python27/Lib/site-packages/cv2
。它有效。
解决方案 8:
对我来说,问题在于我在同一个Eclipse 项目中使用了不同版本的 Python。我的设置与项目属性和运行配置Python 版本不一致。
在菜单项目→属性→ PyDev中,我将解释器设置为 Python 2.7.11。
在运行配置→解释器中,我使用的是默认解释器。将其更改为 Python 2.7.11 解决了该问题。
解决方案 9:
如果您的构建系统(我的情况是CMake)将文件从 复制<name>.dll
到<name>.pyd
,如果原始文件实际上不是 DLL 文件,您将收到此错误。 在我的情况下,构建共享库已被关闭,因此底层文件实际上是*.lib
。
我在Dependency Walkerpyd
中加载文件时发现了这个错误,并发现它无效。
解决方案 10:
更新 NumPy。
pip install numpy --upgrade
它对我有用!
解决方案 11:
这个对我有用:
pip install -- pywin32==227
解决方案 12:
当我使用 32 位 Windows 安装程序在系统上卸载并重新安装不同版本的 Python 2.7.x 时,我遇到了同样的问题。我在大多数导入语句上都遇到了同样的错误。
我卸载了新安装的 Python,下载了一个 64 位 Windows 安装程序,再次重新安装了 Python,就可以了。
解决方案 13:
因此,我在 Windows 下安装 vtk 时遇到了问题(因为我使用的是 Python 3.7,所以到目前为止还没有可用的二进制文件。旧版本的 Pythonpip 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
解决方案 14:
我在尝试编写有关语音转文本的代码时遇到了同样的问题。
解决办法很简单,使用pip方法卸载之前的pywin32:
pip uninstall pywin32
上述操作将删除现有的,默认情况下适用于 32 位计算机。然后使用
pip install pywin32
这将为您正在使用的 64 位计算机安装一个。
解决方案 15:
我在尝试运行 uvicorn 时遇到了类似的问题,
创建一个新的虚拟环境并重新安装 python 包成功了
解决方案 16:
我尝试逐步检查代码并在初始化过程中取消后收到此错误。将文件移动到另一个文件夹然后再移回后,此错误消失。我不知道为什么。
解决方案 17:
您可以opencv
从官方网站或非官方网站安装。
如果您正在使用,请参考这个问题和这个Anaconda
问题。
解决方案 18:
它有一个非常简单的解决方案。安装opencv
后
cv2.pyd
从C:opencvuildpython.7 **x64**
至C:Python27Libsite-packages
而不是,cv2.pyd
从C:opencvuildpython.7 **x86**
到C:Python27Libsite-packages
解决方案 19:
尝试导入 MySQLdb 时出现此错误。
对我有用的方法是卸载 Python,然后重新安装它。
安装 npm ( https://www.npmjs.com/get-npm )后,我收到错误。它所做的一件事就是安装 Python,尽管我已经安装了它。
解决方案 20:
首先我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
解决方案 21:
请确保您安装了 Python 2.7.12 或以下版本。否则您肯定会收到此错误。
如果操作系统是 64 位,请确保安装的 Oracle 客户端也是 64 位。
确保 Python 2.7 的 Microsoft Visual C++ 编译器对于 64 位操作系统是 64 位的,对于 32 位操作系统是 32 位的。
注意:如果您的操作系统是 64 位,请安装所有 64 位软件包,或者如果操作系统是 32 位,请安装 32 位软件包。
解决方案 22:
这对我来说很有效。我尝试过不同的方法,但这是我最好的解决方案。
打开命令提示符并输入以下内容;
pip install opencv-python
(请确保您的互联网连接已打开。)
此后,尝试再次导入。
解决方案 23:
您的Anaconda版本可能是 32 位,但它应该是 64 位。
解决方案 24:
如果你正在使用pycharm,我会进入设置 -> Python 解释,然后单击 + 按钮,在 Python 包列表中搜索名称,
当你想安装某些东西时,会显示要去哪里的图像
解决方案 25:
我找到了解决方案。也许您可以尝试使用 cmd 窗口而不是Anaconda提示窗口来启动您的第一个Scrapy测试。