首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ImportError: DLL加载失败:%1不是有效的Win32应用程序。但是DLL已经在那里了

ImportError: DLL加载失败:%1不是有效的Win32应用程序。但是DLL已经在那里了
EN

Stack Overflow用户
提问于 2013-09-26 12:59:00
回答 19查看 444.3K关注 0票数 125

我的情况很像ImportError: DLL load failed: %1 is not a valid Win32 application的情况,但那里的答案对我不起作用。

我的Python代码说:

代码语言:javascript
复制
import cv2

但是这一行抛出了这个问题标题中显示的错误。

我在这台64位机器上的C:\lib\opencv中安装了OpenCV。我使用的是64位Python。

我的PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7。这个文件夹包含cv2.pyd,仅此而已。

我的PATH变量:Path=%OPENCV_DIR%\bin;...此文件夹包含39个opencv_core246d.dll等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环境变量中”。但是如上所述,我的路径中已经有了OpenCV二进制文件夹(C:\lib\opencv\build\x64\vc11\bin)。而且我的OpenCV安装没有任何发布文件夹(除了build/java下的一个空文件夹)。

你知道哪里出问题了吗?我可以让Python详细跟踪加载过程吗?DLL到底在寻找什么?

谢谢,拉斯

编辑:

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

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2013-09-27 11:00:50

Unofficial Windows Binaries for Python Extension Packages

您可以在这里找到任何python库。

票数 85
EN

Stack Overflow用户

发布于 2014-08-20 14:45:11

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

票数 44
EN

Stack Overflow用户

发布于 2016-08-09 08:38:56

哇,我又找到了一个解决这个问题的例子。上述方法都不起作用。最终,我使用了python的能力来内省正在加载的内容。对于python 2.7,这意味着:

代码语言:javascript
复制
import imp
imp.find_module("cv2")

这在Anaconda DLL目录中出现了一个完全意想不到的"cv2.pyd“文件,该文件未被多次卸载/安装尝试触及。Python首先在那里查找,但没有找到我良好的安装。我删除了cv2.pyd文件并再次尝试imp.find_module(" cv2 "),python立即找到了正确的文件,cv2开始工作。

因此,如果其他解决方案都不适用于您,请确保使用python内省来查看python试图加载的文件。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19019720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档