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

我有一个非常像ImportError的情况:DLL加载失败:%1不是有效的Win32应用程序 ,但答案有没有为我工作。

我的Python代码说:

import cv2 

但是,该行会引发此问题标题中显示的错误。

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

我的PYTHONPATHvariables: PYTHONPATH=C:\lib\opencv\build\python\2.7 。 这个文件夹包含cv2.pyd ,这就是全部。

我的PATHvariables: Path=%OPENCV_DIR%\bin;...此文件夹包含39个DLL文件,如opencv_core246d.dll

OPENCV_DIR具有以下值: OPENCV_DIR=C:\lib\opencv\build\x64\vc11

ImportError:DLL加载失败的解决scheme:%1不是一个有效的Win32应用程序说要将新的opencv二进制文件path( C:\opencv\build\bin\Release )添加到Windows PATH环境variables中。 但是如上所示,我的PATH中已经有了OpenCV二进制文件夹( C:\lib\opencv\build\x64\vc11\bin )。 而我的OpenCV安装没有任何发布文件夹(build / java下的空白文件除外)。

任何想法是什么问题? 我可以告诉Python详细追踪加载过程吗? 究竟是什么DLL寻找?

谢谢,拉尔斯

编辑:

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

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

你可以从这里find任何的Python库

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

我只是有这个问题,它只是因为我使用的OpenCV文件的x64版本。 试过x86和它的工作。

哇,我发现了另外一个这样的问题。 以上都没有奏效。 最终我用python的能力来反思什么被加载。 对于Python 2.7这意味着:

 import imp imp.find_module("cv2") 

这在Anaconda DLL目录中出现了一个完全意外的“cv2.pyd”文件,这个文件没有被多个卸载/安装尝试所触及。 Python首先在那里看,没有find我的好安装。 我删除了那个cv2.pyd文件并且再次尝试了imp.find_module(“cv2”)并且python立刻find了正确的文件并且cv2开始工作。

所以,如果没有其他的解决scheme为您工作,请确保您使用python introspection来查看python试图加载什么文件。

在我的情况下,我有64位的Python,它是lxml是错误的版本 – 我应该一直在使用它的x64版本。 我通过下载64位版本的lxml解决了这个问题:

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

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

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

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

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

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

运行configuration>解释器中 ,我正在使用默认解释器。 将其更改为Python 2.7.11修复了这个问题。

如果你的构build系统(在我的情况下,CMake)从<name>.dll文件复制到<name>.pyd ,如果原始文件实际上不是一个DLL,你会得到这个错误。 在我的情况下,build立共享库被closures,所以底层文件实际上是*.lib

我发现这个错误是通过在DependencyWalker中加载pyd文件并发现它是无效的。

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

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

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

    pip uninstall pywin32

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

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

它解决了我的问题。 你也可以试试看。 希望它也适合你。

当我在我的系统上使用32位Windows安装程序卸载并重新安装不同版本的2.7.x Python时,我遇到了同样的问题。 我的大部分导入语句都有同样的错误。 我卸载了新安装的Python,并下载了一个64位的Windows安装程序,并重新安装了Python,它工作。 希望这可以帮助你。

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

您可以从官方或非官方网站安装opencv

如果您使用的是Anaconda请参考这个问题和这个问题。

  1. 请确保你已经安装了Python 2.7.12或以下的版本,否则你将会得到这个错误。
  2. 如果OS是64位,请确保安装了Oracle客户端64位。
  3. 确保用于Python 2.7的Microsoft Visual C ++编译器对于64位Os是64位,对于32位是32位。 注意: – 如果你的操作系统是54位安装所有包的64位或者如果是32位安装32位软件包。

我find了解决scheme,也许你可以尝试使用cmd窗口而不是anaconda提示窗口来启动你的第一个scrapytesting。