Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ImportError:DLL加载失败:%1不是有效的Win32应用程序。但是DLL';那里有什么_Python_Opencv_Dll_Path - Fatal编程技术网

Python ImportError:DLL加载失败:%1不是有效的Win32应用程序。但是DLL';那里有什么

Python ImportError:DLL加载失败:%1不是有效的Win32应用程序。但是DLL';那里有什么,python,opencv,dll,path,Python,Opencv,Dll,Path,我有一个非常类似的情况,但那里的答案对我不起作用 我的Python代码说: import cv2 但这一行抛出了这个问题标题中所示的错误 我在这台64位机器上的C:\lib\OpenCV中安装了OpenCV。我使用的是64位Python My PYTHONPATH变量:PYTHONPATH=C:\lib\opencv\build\python\2.7。此文件夹包含cv2.pyd,仅此而已 我的路径变量:PATH=%OPENCV\u DIR%\bin此文件夹包含39个DLL文件,如opencv\

我有一个非常类似的情况,但那里的答案对我不起作用

我的Python代码说:

import cv2
但这一行抛出了这个问题标题中所示的错误

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

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

我的路径变量:
PATH=%OPENCV\u DIR%\bin
此文件夹包含39个DLL文件,如
opencv\u core246d.DLL

OPENCV\u DIR有以下值:
OPENCV\u DIR=C:\lib\OPENCV\build\x64\vc11

位于的解决方案表示将“新的opencv二进制文件路径(
C:\opencv\build\bin\Release
)添加到Windows path环境变量”。但是如上所示,我的路径中已经有OpenCV二进制文件文件夹(
C:\lib\OpenCV\build\x64\vc11\bin
)。我的OpenCV安装没有任何发布文件夹(build/java下的一个空文件夹除外)

有没有关于出了什么问题的想法?我可以告诉Python详细跟踪加载过程吗?它到底在找什么

谢谢, 拉尔斯

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


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

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

在我的例子中,我使用的是64位python,而lxml的版本是错误的——我也应该使用64位python的x64版本。我在这里下载了64位版本的lxml,解决了这个问题:


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

我刚刚遇到了这个问题,结果证明这只是因为我使用的是x64版本的opencv文件。尝试了x86,它成功了。

我从
/opencv/build/python/2.7/x86
文件夹复制了
cv2.pyd
文件,而不是从
/x64
文件夹复制到
C:/Python27/Lib/site packeges
。我按照提供的其他说明进行操作


由其他人添加,未经验证:我还将文件
cv2.pyd
复制到文件夹
C:/Python27/Lib/site packages/cv2
。对我来说,问题是我在同一个Eclipse项目中使用了不同版本的Python。我的设置与项目属性和运行配置Python版本不一致

在Project>Properties>PyDev中,我将解释器设置为Python2.7.11


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

哇,我发现了这个问题的另一个例子。上述措施都不起作用。最后,我使用python的能力来反思正在加载的内容。对于python 2.7,这意味着:

import imp
imp.find_module("cv2")
这在Anaconda DLL目录中发现了一个完全意外的“cv2.pyd”文件,多次卸载/安装尝试都没有触及该文件。Python首先在那里寻找,没有找到我的好安装。我删除了cv2.pyd文件,并再次尝试imp.find_模块(“cv2”),python立即找到了正确的文件,cv2开始工作


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

我找到了解决方案,也许您可以尝试使用cmd窗口而不是anaconda提示符窗口来启动第一个刮擦测试。

首先,我将
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
如果生成系统(在我的例子中是CMake)将文件从
.dll
复制到
.pyd
,如果原始文件实际上不是dll,则会出现此错误。在我的例子中,构建共享库被关闭,因此底层文件实际上是一个
*.lib


我发现这个错误是因为加载了
pyd
文件,发现它无效。

我也遇到了同样的问题。以下是我所做的:

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

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

    pip卸载pywin32

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

    pip安装
    控制盘文件类似于:piwin32-XXX-cpXX-none-win32.whl


  • 它为我解决了这个问题。你也可以尝试一下。希望它也能为您工作。

    当我使用32位Windows安装程序在我的系统上卸载并重新安装了不同版本的Python 2.7.x时,我遇到了同样的问题。我的大多数导入语句都出现了相同的错误。 我卸载了新安装的Python,下载了一个64位Windows安装程序,然后重新安装了Python,它成功了。
    希望这对您有所帮助。

    您可以从或站点安装
    opencv

    如果您使用的是
    Anaconda
    ,请参阅问题和问题

  • 请确保您已安装Python2.7.12或更低版本,否则肯定会出现此错误
  • 如果操作系统为64位,请确保Oracle客户端已安装64位
  • 确保我
    >>> import cv2
    >>> print cv2.__version__
    2.4.13
    
    pip install VTK-8.2.0-cp37-cp37m-win32.whl
    
    python
    import vtk
    
    pip install -- pywin32==227
    
    pip uninstall pywin32
    
    pip install pywin32