125

我的情况非常类似于Error "ImportError: DLL load failed: %1 is not a valid Win32 application"中的情况,但那里的答案对我不起作用。

我的 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 load failed: %1 is not a valid Win32 application”的解决方案说要添加“新的 opencv 二进制文件路径 ( C:\opencv\build\bin\Release) 到 Windows PATH 环境变量”。但如上所示,C:\lib\opencv\build\x64\vc11\bin我的 PATH 中已经有了 OpenCV 二进制文件夹 ( )。而且我的 OpenCV 安装没有任何 Release 文件夹(除了build/java下的一个空文件夹)。

怎么了?我可以告诉 Python 详细跟踪加载过程吗?它到底在寻找什么 DLL 文件?

我注意到,根据http://www.dependencywalker.com/,in是32 位cv2.pydC:\lib\opencv\build\python\2.7,而我正在运行的机器和 Python 是 64 位的。这可能是问题吗?如果是这样,我在哪里可以找到 cv2.pyd 的 64 位版本?

4

23 回答 23

87

Python 扩展包的非官方 Windows 二进制文件

你可以从这里找到任何 Python 库。

于 2013-09-27T03:00:49.923 回答
44

请检查您使用的 Python 版本是否也是 64 位的。如果不是,那么这可能是问题所在。您将使用 32 位 Python 版本并为 OpenCV 库安装 64 位二进制文​​件。

于 2014-08-20T06:45:11.103 回答
20

哇,我发现了另一个解决这个问题的案例。以上都没有奏效。最终,我使用了 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 试图加载的文件。

于 2016-08-09T00:38:55.607 回答
7

就我而言,我有 64 位 Python,而且lxml是错误的版本——我也应该使用它的 x64 版本。我通过在此处下载 64 位版本的 lxml 解决了这个问题:

https://pypi.python.org/pypi/lxml/3.4.1

lxml-3.4.1.win-amd64-py2.7.exe

这是一个令人沮丧的问题的最简单的答案。

于 2014-11-28T11:23:37.680 回答
6

我刚遇到这个问题。原来这只是因为我使用的是 64 位版本的 OpenCV 文件。我试过x86,它工作。

于 2014-11-30T21:08:41.263 回答
3

我有同样的问题。这是我所做的:

  1. 我从这里下载了 pywin32 轮文件,然后

  2. 我卸载了pywin32模块。要卸载,请在命令提示符下执行以下命令。

    pip uninstall pywin32

  3. 然后,我重新安装了 pywin32。要安装它,请在 pywin32 wheel 文件所在的同一目录中打开命令提示符。然后执行以下命令。

    pip install <Name of the wheel file with extension> 轮文件将类似于:piwin32-XXX-cpXX-none-win32.whl

它为我解决了这个问题。

于 2017-03-23T17:28:30.367 回答
2

我将cv2.pyd文件从/opencv/build/python/2.7/x86文件夹而不是从/x64文件夹复制到C:/Python27/Lib/site-packeges. 我按照此处提供的其余说明进行操作。

由其他人添加,未验证:我也将文件复制cv2.pyd到文件夹C:/Python27/Lib/site-packages/cv2. 有用。

于 2015-04-24T00:18:53.187 回答
2

对我来说,问题是我在同一个Eclipse 项目中使用了不同版本的 Python。我的设置与项目属性运行配置Python 版本不一致。

在菜单ProjectPropertiesPyDev中,我将解释器设置为 Python 2.7.11。

Run ConfigurationsInterpreter中,我使用的是Default Interpreter。将其更改为 Python 2.7.11 解决了该问题。

于 2016-01-14T16:38:10.367 回答
2

如果您的构建系统(在我的情况下为CMake)将文件从 复制<name>.dll<name>.pyd,如果原始文件实际上不是 DLL 文件,您将收到此错误。在我的例子中,构建共享库被关闭了,所以底层文件实际上是一个*.lib.

通过在Dependency Walkerpyd中加载文件并发现它无效,我发现了这个错误。

于 2017-03-15T21:54:58.253 回答
2

更新 NumPy。

pip install numpy --upgrade

这个对我有用!

于 2020-01-18T17:13:42.003 回答
2

这个对我有用:

pip install -- pywin32==227
于 2020-07-01T17:02:05.270 回答
1

当我使用 32 位 Windows Installer 在我的系统上卸载并重新安装不同版本的 Python 2.7.x 时,我遇到了同样的问题。我在大多数导入语句中都遇到了同样的错误。

我卸载了新安装的 Python,下载了 64 位 Windows 安装程序,再次重新安装了 Python,它运行正常。

于 2017-06-05T04:22:34.807 回答
1

所以我在 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
于 2019-11-22T07:51:42.753 回答
1

我在尝试编写有关语音到文本的代码时遇到了同样的问题。

解决方案非常简单。使用pip方法卸载之前的pywin32:

pip uninstall pywin32

以上将删除现有的,默认情况下适用于 32 位计算机。并使用再次安装

pip install pywin32

这将为您正在使用的 64 位计算机安装一个。

于 2020-09-15T03:46:27.843 回答
1

我在尝试运行 uvicorn 时遇到了类似的问题,
创建新的虚拟环境并重新安装 python 包有效

于 2022-02-18T17:09:21.697 回答
0

cv2.pyd首先,我从复制/opencv/build/python/2.7/x86C:/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
于 2017-02-18T07:16:26.837 回答
0

您可以opencv官方非官方站点安装。

如果使用的是.Anaconda

于 2017-06-10T14:14:57.960 回答
0
  1. 请确保您已安装 Python 2.7.12 或以下版本。否则你肯定会得到这个错误。
  2. 如果操作系统是 64 位,请确保安装了 64 位的 Oracle 客户端。
  3. 确保用于 Python 2.7 的 Microsoft Visual C++ 编译器对于 64 位操作系统是 64 位或对于 32 位是 32 位。

注意:如果您的操作系统是 64 位,请安装所有 64 位软件包,或者如果操作系统是 32 位,请安装 32 位软件包。

于 2017-09-14T10:51:36.870 回答
0

它有一个非常简单的解决方案。安装opencv 地点后

cv2.pydC:\opencv\build\python\2.7\ **x64**C:\Python27\Lib\site-packages

而不是,cv2.pydC:\opencv\build\python\2.7\ **x86**C:\Python27\Lib\site-packages

于 2018-01-16T15:09:39.123 回答
0

尝试导入 MySQLdb 时出现此错误。

对我有用的是卸载 Python,然后重新安装它。

安装 npm ( https://www.npmjs.com/get-npm ) 后出现错误。它所做的一件事就是安装 Python,即使我已经有了它。

于 2019-11-14T19:27:49.517 回答
0

这对我有用。我尝试了不同的方法,但这是我最好的解决方案。

打开命令提示符并键入以下内容;

pip install opencv-python

(确保您的 Internet 连接已打开。)

之后,尝试再次导入它。

于 2020-02-16T14:14:59.253 回答
0

也可能是您的Anaconda版本应该是 64 位时是 32 位的。

于 2020-11-23T16:44:04.633 回答
-2

我找到了解决方案。也许您可以尝试使用 cmd 窗口而不是Anaconda提示窗口来开始您的第一个Scrapy测试。

于 2017-01-31T13:43:52.690 回答