developer tip

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

copycodes 2020. 8. 19. 19:47
반응형

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


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를 어디에서 찾을 수 있습니까?


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

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


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


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

import imp
imp.find_module("cv2")

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

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


제 경우에는 64 비트 파이썬이 있고 잘못된 버전은 lxml이었습니다. x64 버전도 사용해야했습니다. 여기에서 lxml 64 비트 버전을 다운로드하여이 문제를 해결했습니다.

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

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

이것은 실망스러운 문제에 대한 가장 간단한 대답이었습니다.


방금이 문제가 있었는데 x64 버전의 opencv 파일을 사용했기 때문이었습니다. x86을 사용해 보았고 작동했습니다.


빌드 시스템 (내 경우 CMake)이 파일을에서 <name>.dll으로 복사 <name>.pyd하면 원본 파일이 실제로 dll이 아닌 경우이 오류가 발생합니다. 제 경우에는 공유 라이브러리 빌드가 꺼 졌으므로 기본 파일은 실제로 *.lib.

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


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

  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

그것은 나를 위해 문제를 해결합니다. 시도해 볼 수도 있습니다. 그것이 당신에게도 효과가 있기를 바랍니다.


나는 복사 cv2.pyd에서 파일을 /opencv/build/python/2.7/x86폴더 대신에서 /x64에 폴더 C:/Python27/Lib/site-packeges. 여기에 제공된 나머지 지침을 따랐 습니다 .

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


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

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

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


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


우선 복사 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

공식 또는 비공식 사이트 opencv에서 설치할 수 있습니다 .

을 사용하는 경우이 질문 과이 문제를 참조하십시오 Anaconda.


  1. Please make sure that you have installed python 2.7.12 or below version otherwise you will get this error definitely.
  2. Make sure Oracle client is 64 bit installed if OS is 64 Bit.
  3. Make sure Microsoft Visual C++ Compiler for Python 2.7 is 64 for bit for 64 bit Os or 32 bit for 32 bit. Note:- IF ur OS is 64 bit install all package of 64 bit or if Os is 32 bit install 32 bit package.

It has a very simple solution. After installing opencv place

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

instead of, place cv2.pyd from C:\opencv\build\python\2.7\ **x86** to C:\Python27\Lib\site-packages


I found the solution, maybe you can try to use the cmd window rather than the anaconda prompt window to start you first scrapy test.

참고URL : https://stackoverflow.com/questions/19019720/importerror-dll-load-failed-1-is-not-a-valid-win32-application-but-the-dlls

반응형