首页 文章

ImportError:DLL加载失败:%1不是有效的Win32应用程序 . 但DLL就在那里

提问于
浏览
94

我的情况与ImportError: DLL load failed: %1 is not a valid Win32 application的情况非常相似,但答案对我不起作用 .

我的Python代码说:

import cv2

但该行抛出了此问题 Headers 中显示的错误 .

我在这台64位机器上的 C:\lib\opencv 中安装了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环境变量” . 但是如上所示,我的PATH中已经有了OpenCV二进制文件夹( C:\lib\opencv\build\x64\vc11\bin ) . 我的OpenCV安装没有任何Release文件夹(build / java下的空文件夹除外) .

关于出了什么问题的任何想法?我可以告诉Python详细跟踪加载过程吗?究竟是什么DLL正在寻找?

谢谢,拉尔斯

编辑:

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

15 回答

  • 6

    对我来说问题是我在同一个Eclipse项目中使用不同版本的Python . 我的设置与Project Properties和Run Configuration Python版本不一致 .

    在Project> Properties> PyDev中,我将Interpreter设置为Python2.7.11 .

    在运行配置>解释器中,我使用的是默认解释器 . 将其更改为Python 2.7.11修复了问题 .

  • 34

    当我使用32位Windows Installer在我的系统上卸载并重新安装不同版本的2.7.x Python时,我遇到了同样的问题 . 我也一样我的大多数import语句都出错了 . 我卸载了新安装的Python并下载了64位Windows安装程序并重新安装了Python并且它运行正常 . 希望这对你有所帮助 .

  • 1

    在我的情况下,我有64位python,而lxml是错误的版本 - 我本来应该使用它的x64版本 . 我在这里通过下载64位版本的lxml来解决这个问题:

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

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

    这是令人沮丧的问题的最简单答案 .

  • 75

    我只是遇到了这个问题,它只是因为我使用的是x64版本的opencv文件 . 尝试了x86,它运作良好 .

  • 0

    如果您的构建系统(在我的情况下为CMake)将文件从 <name>.dll 复制到 <name>.pyd ,如果原始文件实际上不是dll,则会出现此错误 . 在我的例子中,构建共享库已关闭,因此底层文件实际上是 *.lib .

    我通过在DependencyWalker中加载 pyd 文件并发现它无效来发现此错误 .

  • 2

    首先,我将 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
    
  • 0

    我有同样的问题 . 这是我做的:

    • 我从here下载了pywin32 Wheel文件,然后

    • 我卸载了 pywin32 模块 . 要卸载,请在“命令提示符”中执行以下命令 .

    pip uninstall pywin32

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

    pip install <Name of the wheel file with extension> 轮盘文件如下: piwin32-XXX-cpXX-none-win32.whl

    它解决了我的问题 . 您可能还想尝试一下 . 希望它也适合你 .

  • 1

    我将 cv2.pyd 文件从 /opencv/build/python/2.7/x86 文件夹而不是从 /x64 文件夹复制到 C:/Python27/Lib/site-packeges . 我按照提供的其他说明here .

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

  • 2

    Unofficial Windows Binaries for Python Extension Packages

    你可以从这里找到任何python库

  • 13

    请检查您使用的python版本是否也是64位 . 如果没有,则可能是问题 . 你将使用32位python版本,并为OPENCV库安装了64位二进制文件 .

  • 2

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

  • 0

    您可以从officialunofficial站点安装 opencv .

    如果您使用 Anaconda ,请参阅this问题和this问题 .

  • 6
    • 请确保您已安装python 2.7.12或更低版本,否则您肯定会收到此错误 .

    • 如果OS为64位,请确保Oracle客户端是64位安装的 .

    • 确保Microsoft Visual C ++ for Python 2.7对于64位Os为64位或对32位为32位 . 注意: - 如果您的操作系统是64位安装所有64位包或如果Os是32位安装32位包 .

  • -2

    它有一个非常简单的解决方案 . 安装 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

  • 0

    我找到了解决方案,也许您可以尝试使用cmd窗口而不是anaconda提示窗口来启动您的第一次scrapy测试 .

相关问题