ImportError : DLL로드 실패 : % 1은 (는) 유효한 Win32 응용 프로그램이 아닙니다. 하지만 DLL이 있습니다.


112

ImportError : DLL load failed : % 1 is not a valid Win32 application 에서 상황이 매우 비슷 하지만 대답이 작동하지 않습니다.

내 Python 코드는 다음과 같습니다.

import cv2

그러나 그 줄은이 질문의 제목에 표시된 오류를 던집니다.

C:\lib\opencv이 64 비트 컴퓨터에 OpenCV가 설치되어 있습니다. 64 비트 Python을 사용하고 있습니다.

내 PYTHONPATH 변수 : PYTHONPATH=C:\lib\opencv\build\python\2.7. 이 폴더에는 cv2.pyd그게 전부입니다.

내 PATH 변수 : Path=%OPENCV_DIR%\bin;...이 폴더에는 opencv_core246d.dll.

OPENCV_DIR의 값은 OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

ImportError 의 해결 방법 : DLL로드 실패 : % 1은 유효한 Win32 응용 프로그램이 아닙니다. "새 opencv 바이너리 경로 ( C:\opencv\build\bin\Release)를 Windows PATH 환경 변수 에 추가" 하라는 메시지가 표시됩니다. 그러나 위와 같이 이미 C:\lib\opencv\build\x64\vc11\binPATH에 OpenCV 바이너리 폴더 ( )가 있습니다. 그리고 내 OpenCV 설치에는 Release 폴더가 없습니다 (빌드 / 자바 아래의 빈 폴더 제외).

무엇이 잘못되었는지에 대한 아이디어가 있습니까? 로딩 프로세스를 자세히 추적하도록 Python에 지시 할 수 있습니까? 정확히 어떤 DLL을 찾고 있습니까?

고마워, Lars

편집하다:

난 그냥에 따르면 것으로 나타났습니다 http://www.dependencywalker.com/cv2.pyd의는 C:\lib\opencv\build\python\2.7내가 실행 해요 기계 및 파이썬 64 비트 인 반면 32 비트입니다. 그게 문제일까요? 그렇다면 64 비트 버전의 cv2.pyd를 어디에서 찾을 수 있습니까?


9
클릭 여기 및 64 비트 OpenCV의 발견
킬 콘솔

1
@KillConsole : 감사합니다. 시도해 보겠습니다. 다운로드 한 설치 패키지에 x86 및 x64 하위 폴더가 모두 포함되어 있으므로 64 비트 용으로 필요한 모든 것이 포함되어 있다고 가정했습니다. 분명히 아닙니다. 만세, 해결했습니다! 이제 "ImportError : numpy.core.multiarray failed to import"로 이동하므로 64 비트 numpy에 대해 동일한 사이트를 시도해 보겠습니다. 답변에 댓글을 남겨 주시면 찬성 및 수락하겠습니다.
LarsH 2013 년

어떤 Python 버전을 사용하셨습니까? (프로세서 비트 버전이 아님)

1
@ Begueradj : 2.7, 그것이 당신이 요구하는 것이라면.
LarsH

1
나는 똑같은 문제가 있었고 아래 해결책 중 어느 것도 도움이되지 않았으므로 PYTHONPATHSimpleCV 라이브러리 설치가 남아있는 항목을 포함하는 데 사용되었습니다. 이미 SimpleCV를 제거 했음에도 불구하고은 PYTHONPATH복원되지 않았으며 SimpleCV 설치로 남은 OpenCV 버전이 충돌하는 일부 디렉토리를 가리 켰습니다. 해결 방법 : PYTHONPATH.
Anton Daneyko

답변:


81

Python 확장 패키지 용 비공식 Windows 바이너리

여기에서 모든 파이썬 라이브러리를 찾을 수 있습니다.


이것은 정말 도움이되었습니다. 나는 무엇이 잘못되었는지 잘 모르겠습니다. 나는 opencv, anaconda3, python3의 버전을 가지고 있습니다. 위 패키지 목록에서 opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64를 설치했으며 몇 시간의 노력 끝에 cv2를 성공적으로 가져올 수있었습니다. 정말 감사합니다.
emeralddove

41

사용중인 Python 버전도 64 비트인지 확인하세요. 그렇지 않다면 문제가 될 수 있습니다. 32 비트 파이썬 버전을 사용하고 OPENCV 라이브러리 용 64 비트 바이너리를 설치했을 것입니다.


질문에서 언급했듯이 64 비트 Python을 사용하고있었습니다.
LarsH

17

와,이 문제에 대한 또 다른 사례를 찾았습니다. 위의 어느 것도 작동하지 않았습니다. 결국 나는로드되는 것을 검사하는 파이썬의 능력을 사용했습니다. Python 2.7의 경우 이는 다음을 의미합니다.

import imp
imp.find_module("cv2")

이로 인해 Anaconda DLL 디렉토리에서 완전히 예상치 못한 "cv2.pyd"파일이 발견되었으며 여러 번의 제거 / 설치 시도에 영향을받지 않았습니다. 파이썬이 먼저 거기를 찾고 있었고 내 좋은 설치를 찾지 못했습니다. 나는 그 cv2.pyd 파일을 삭제하고 imp.find_module ( "cv2")을 다시 시도했고 파이썬은 즉시 올바른 파일을 발견했고 cv2가 작동하기 시작했습니다.

따라서 다른 솔루션이 작동하지 않는 경우 python introspection을 사용하여 python이로드하려는 파일을 확인하십시오.


4
다른 폴더에서 파일 버전을 완전히 실행하려는 것이 문제였습니다. 이 솔루션은 실제로 무슨 일이 일어나고 있는지 파악하는 데 도움이되었습니다. 감사!
Emad Y

3
이것은 훌륭한 답변입니다, 감사합니다! 호환되지 않는 Python 설치에서 "ctypes"를로드하는 PyDev에서 문제가 발생했으며 WinPython을 사용하도록 인터프리터를 설정해야한다는 것을 깨달았습니다.
eacousineau

7

제 경우에는 64 비트 파이썬이 있고 잘못된 버전은 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.

DependencyWalker 에서 pyd파일 을로드하고 유효하지 않음을 확인하여이 오류를 발견했습니다 .


2

나는 같은 문제가 있었다. 내가 한 일은 다음과 같습니다.

  1. 여기 에서 pywin32 Wheel 파일을 다운로드 한 다음

  2. pywin32 모듈을 제거했습니다 . 제거하려면 명령 프롬프트에서 다음 명령을 실행하십시오.

    pip uninstall pywin32

  3. 그런 다음 pywin32를 다시 설치했습니다 . 설치하려면 pywin32 휠 파일이있는 동일한 디렉토리에서 명령 프롬프트를 엽니 다. 그런 다음 다음 명령을 실행하십시오.

    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. 여기에 제공된 나머지 지침을 따랐 습니다 .

확인되지 않은 다른 사람이 추가 함 : 파일 cv2.pyd을 폴더로 복사 합니다 C:/Python27/Lib/site-packages/cv2. 효과가있다.


1

나에게 문제는 동일한 Eclipse 프로젝트 에서 다른 버전의 Python을 사용하고 있다는 것 입니다. 내 설정이 프로젝트 속성실행 구성 Python 버전 과 일치하지 않습니다 .

에서 프로젝트> 속성>의 PyDev , 나는 Python2.7.11에 통역 세트를했다.

에서 실행 구성> 통역 , 나는 기본 통역을 사용했다. Python 2.7.11로 변경하면 문제가 해결되었습니다.


1

32 비트 Windows Installer를 사용하여 내 시스템에서 다른 버전의 Python 2.7.x를 제거하고 다시 설치할 때 동일한 문제가 발생했습니다. 대부분의 수입 명세서에서 동일한 오류가 발생했습니다. 새로 설치된 Python을 제거하고 64 비트 Windows 설치 프로그램을 다운로드하고 Python을 다시 설치했는데 제대로 작동했습니다. 도움이 되었기를 바랍니다.


1

그래서 Windows에서 vtk를 설치하는 데 문제가있었습니다 (python 3.7을 사용하기 때문에 지금까지 이전 Python 버전에만 사용할 수있는 바이너리가 없습니다 pip install vtk가 작동하지 않습니다)

내 cmd에 파이썬을 썼습니다.

Python 3.7.3 on win32

그래서 이제 32 비트에서 실행되는 파이썬 3.7.3이 있다는 것을 알고 있습니다.

그런 다음 VTK‑8.2.0‑cp37‑cp37m‑win32.whl 에서 올바른 휠을 다운로드했습니다.

다음으로 그 바퀴를 설치했습니다.

pip install VTK-8.2.0-cp37-cp37m-win32.whl

그런 다음 테스트했고 작동했습니다.

python
import vtk


0

우선 복사 cv2.pyd에서 /opencv/build/python/2.7/x86C:/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
  1. 파이썬 2.7.12 이하 버전을 설치했는지 확인하십시오. 그렇지 않으면이 오류가 확실히 발생합니다.
  2. OS가 64 비트 인 경우 Oracle 클라이언트가 64 비트인지 확인합니다.
  3. Python 2.7 용 Microsoft Visual C ++ 컴파일러가 64 비트 OS의 경우 64 비트, 32 비트의 경우 32 비트인지 확인합니다. 참고 :-OS가 64 비트 인 경우 64 비트의 모든 패키지를 설치하거나 OS가 32 비트 인 경우 32 비트 패키지를 설치합니다.

0

매우 간단한 해결책이 있습니다. 설치 한 후 opencv 자리를

cv2.pyd에서 C:\opencv\build\python\2.7\ **x64**C:\Python27\Lib\site-packages

대신, 장소 cv2.pyd에서 C:\opencv\build\python\2.7\ **x86**C:\Python27\Lib\site-packages


0

MySQLdb를 가져 오려고 할 때이 오류가 발생했습니다.

나를 위해 일한 것은 Python을 제거한 다음 다시 설치하는 것이 었습니다.

npm ( https://www.npmjs.com/get-npm )을 설치 한 후 오류가 발생했습니다 . 한 가지는 이미 파이썬을 가지고 있었지만 파이썬을 설치하는 것입니다.


0

이것은 나를 위해 일했습니다. 나는 다른 방법을 시도했지만 이것이 최선의 해결책이었습니다.

명령 프롬프트를 열고 다음을 입력하십시오. pip install opencv-python. (인터넷이 켜져 있는지 확인하십시오). 그 후에 다시 가져 오십시오.


0

이것은 나와 함께 일했습니다

pip install -- pywin32==227

1
Stack Overflow에 오신 것을 환영합니다. 왜 당신을 위해 일했습니까? 이 답변에 더 많은 세부 정보를 추가 할 수 있습니까?
Azametzin

-2

해결책을 찾았습니다. 아나콘다 프롬프트 창 대신 cmd 창을 사용하여 첫 번째 스크래피 테스트를 시작할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.