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

问题描述 投票:100回答:16

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

我的Python代码说:

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个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处的解决方案表示要向Windows PATH环境变量添加“新的opencv二进制路径(C:\opencv\build\bin\Release)”。但是,如上所示,我的PATH中已经有OpenCV Binaries文件夹(C:\lib\opencv\build\x64\vc11\bin)。而且我的OpenCV安装没有任何Release文件夹(除了build / java下为空)。

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

谢谢,拉斯

编辑:

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

python opencv dll path
16个回答
78
投票

Unofficial Windows Binaries for Python Extension Packages

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


1
投票
当我使用32位Windows Installer在系统上卸载并重新安装其他版本的2.7.x Python时,遇到了相同的问题。我的大多数导入语句中都出现了相同的错误。我卸载了新安装的Python,然后下载了64位Windows安装程序,然后再次重新安装了Python,它可以正常工作。希望对您有帮助。

0
投票
首先,我将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
投票
您可以从opencvofficial站点安装unofficial。>>

如果使用this,请参考this问题和Anaconda问题。


0
投票
    请确保您已安装python 2.7.12或更低版本,否则肯定会收到此错误。

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

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

-2
投票
我找到了解决方案,也许您可​​以尝试使用cmd窗口而不是anaconda提示窗口来开始您的第一笔测试。

37
投票

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


14
投票

哇,我发现了这个问题的另一种情况。以上都不起作用。最终,我使用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试图加载的文件。


6
投票

就我而言,我有64位python,而lxml是错误的版本-我也应该一直使用x64版本。我通过在此处下载lxml的64位版本来解决此问题:

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

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

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


6
投票

我只是遇到了这个问题,原来只是因为我正在使用x64版本的opencv文件。尝试过x86,它可以正常工作。


2
投票

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

我通过将pyd文件加载到DependencyWalker并发现它无效而发现了此错误。


2
投票

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

  1. [我从here下载了pywin32 Wheel文件,然后

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

    pip uninstall pywin32

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

    pip install <Name of the wheel file with extension>轮文件将类似于:

    piwin32-XXX-cpXX-none-win32.whl

它为我解决了问题。您可能还想尝试一下。希望它也对您有用。

2
投票
我从cv2.pyd文件夹而不是从/opencv/build/python/2.7/x86文件夹复制了/x64文件到C:/Python27/Lib/site-packeges。我遵循了here提供的其余说明。

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


1
投票
对我来说,问题是我在

same Eclipse项目中使用了不同版本的Python。我的设置与Project PropertiesRun Configuration Python版本不一致。

Project> Properties> PyDev

中,我将解释器设置为Python2.7.11。

运行配置>解释器

中,我正在使用默认解释器。将其更改为Python 2.7.11可解决此问题。
© www.soinside.com 2019 - 2024. All rights reserved.