我遇到了这个问题,我尝试在 Python 上导入cv2
并收到以下错误消息。
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: %1 is not a valid Win32 application.
我确实知道有很多关于此的帖子,其中建议包的位数与 Python 包不同。
但是,我正在运行的所有内容都是 64 位。 我在 Windows 7 64 位上,我有 winpython 2.7.3.3,64 位发行版,我使用此处提供的说明将 OpenCV 编译为 64 位,并将 cv2.pyd DLL 文件放在 Python 解释器的 Lib/site-packages 文件夹中。
不幸的是,使用 Python 的 32 位版本的建议不再适用于我,因为我必须处理对于 32 位来说太大的 NumPy 数组。
唯一缺少的是将新的NumPy二进制文件路径(C:\opencv\build\bin\Release)添加到Windows PATH环境变量中,重新启动Python解释器。
现在一切似乎都正常!
由于引用Win32,ImportError消息有点误导,而问题只是找不到OpenCV DLL。
通过将 OpenCV 二进制文件的路径添加到 Windows PATH 环境变量中解决了此问题(例如,在我的计算机上,此路径是:C:\opencv\build\bin\Release)。
您可以尝试安装32位版本的OpenCV。
我刚刚遇到这个,问题是该软件包曾经安装在每用户软件包目录中。(在视窗上。aka %AppData%\Python.因此,Python首先在那里寻找,找到一个旧的32位版本的.pyd文件,并因列出的错误而失败。不幸的是,pip 卸载本身不足以清理它,此时 pip 10.0.1 似乎没有用于卸载的 --user 参数,仅用于安装。
tl;dr 从 %AppData%\python\python27\site-packages 中删除旧的 .pyd 为我解决了这个问题。
你必须为Windows 64位重建cv2模块。
当 Python 版本混合时,也会出现此错误:
例如,如果要加载的任何DLL文件已使用Python 2.7.16编译,并且您尝试使用Python 2.7.15导入,则会引发错误ImportError: DLL load failed: %1 is not a valid Win32 application.
。
这至少是我发现的问题所在。
要做的就是将 cv2.pyd 文件从 x86 文件夹(例如 C:\opencv\build\python\2.7\x86\)复制到 C:\Python27\Lib\site-packages\,而不是从 x64 文件夹中。
我遇到了与之前答案中提到的错误相同的错误,但只有在我使用 pyinstaller
时才会发生。
我在诗歌中做了以下工作:
poetry run python -m pip install pypiwin32
它对我有用。我正在使用
python 3.8.10
pyinstaller 4.7
# Those are the versions that worked for me
pypiwin32 223
pywin32 303
pywin32-ctypes 0.2.0
当我遇到此错误时,在计算机崩溃并重新启动后,它消失了。尝试关闭并重新打开 IDE。如果这不起作用,请尝试重新启动计算机。当我收到此错误时,我刚刚安装了库,没有重新启动 PyCharm。
我从来没有先关闭 PyCharm 进行测试,因为我爆炸的计算机不断随机崩溃......我正在研究那个,但它至少解决了这个问题......小胜利... :)。