Ich habe eine Situation, die der von ImportError sehr ähnelt: Laden von DLL fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung , aber die Antwort dort funktioniert für mich nicht.
Mein Python-Code sagt:
import cv2
Diese Zeile wirft jedoch den im Titel dieser Frage angegebenen Fehler.
Ich habe OpenCV in C:\lib\opencv
auf dieser 64-Bit-Maschine installiert. Ich verwende 64-Bit-Python.
Meine PYTHONPATH-Variable: PYTHONPATH=C:\lib\opencv\build\python\2.7
. Dieser Ordner enthält cv2.pyd
und das ist alles.
Meine PATH-Variable: Path=%OPENCV_DIR%\bin;...
Dieser Ordner enthält 39 DLL -Dateien wie opencv_core246d.dll
.
OPENCV_DIR hat folgenden Wert: OPENCV_DIR=C:\lib\opencv\build\x64\vc11
.
Die Lösung um ImportError: DLL ist fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung sagt, "den neuen opencv-Binärpfad (C:\opencv\build\bin\Release
) zur Windows-Umgebungsvariablen PATH" hinzuzufügen. Wie oben gezeigt, habe ich bereits den OpenCV-Ordner für Binärdateien (C:\lib\opencv\build\x64\vc11\bin
) in meinem PFAD. Und meine OpenCV-Installation hat keine Release-Ordner (außer einem leeren unter build/Java).
Irgendwelche Ideen, was falsch läuft? Kann ich Python anweisen, den Ladevorgang ausführlich zu verfolgen? Welche DLL sucht es genau?
Danke, Lars
Mir ist gerade aufgefallen, dass nach http://www.dependencywalker.com/ der cv2.pyd
in C:\lib\opencv\build\python\2.7
32-Bit ist, während die Maschine und der Python, auf dem ich laufe, 64-Bit sind. Könnte das das Problem sein? Und wenn ja, wo finde ich eine 64-Bit-Version von cv2.pyd?
Inoffizielle Windows-Binärdateien für Python-Erweiterungspakete
hier finden Sie alle Python-Bibliotheken
Bitte überprüfen Sie, ob die verwendete Python-Version auch 64-Bit ist. Wenn nicht, könnte dies das Problem sein. Sie würden eine 32-Bit-Pythonversion verwenden und 64-Bit-Binärdateien für die OPENCV-Bibliothek installiert haben.
Wow, ich habe noch einen anderen Fall für dieses Problem gefunden. Keines der oben genannten funktioniert. Schließlich nutzte ich Pythons Fähigkeit, um zu untersuchen, was geladen wurde. Für Python 2.7 bedeutet das:
import imp
imp.find_module("cv2")
Daraufhin wurde eine völlig unerwartete "cv2.pyd" -Datei in einem Anaconda-Verzeichnis DLL angezeigt, das nicht von mehreren Deinstallations-/Installationsversuchen berührt wurde. Python suchte zuerst dort und fand meine gute Installation nicht. Ich löschte die cv2.pyd-Datei und versuchte es erneut mit imp.find_module ("cv2"). Python fand sofort die richtige Datei und cv2 begann zu arbeiten.
Wenn keine der anderen Lösungen für Sie geeignet ist, stellen Sie sicher, dass Sie Python Introspection verwenden, um zu sehen, welche Datei Python laden möchte.
Ich hatte gerade dieses Problem, es ist nur, weil ich die x64-Version der opencv-Datei verwendet habe. Versuchte das x86 und es hat funktioniert.
In meinem Fall habe ich 64-Bit-Python, und es war Lxml, das war die falsche Version. Ich habe dieses Problem gelöst, indem ich die 64-Bit-Version von lxml hier heruntergeladen habe:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-AMD64-py2.7.exe
Dies war die einfachste Antwort auf ein frustrierendes Problem.
Wenn Ihr Build-System (in meinem Fall CMake) die Datei von <name>.dll
nach <name>.pyd
kopiert, wird diese Fehlermeldung angezeigt, wenn die Originaldatei nicht wirklich eine DLL war. In meinem Fall wurde das Erstellen gemeinsam genutzter Bibliotheken deaktiviert, sodass die zugrunde liegende Datei tatsächlich ein *.lib
war.
Ich habe diesen Fehler entdeckt, indem ich die Datei pyd
in DependencyWalker geladen habe und festgestellt habe, dass sie nicht gültig ist.
Ich cv2.pyd
-Datei aus /opencv/build/python/2.7/x86
-Ordner statt aus /x64
-Ordner in C:/Python27/Lib/site-packeges
kopiert. Ich folgte den übrigen Anweisungen hier .
Von einer anderen Person hinzugefügt, nicht verifiziert: Ich kopiere auch die Datei cv2.pyd
in den Ordner C:/Python27/Lib/site-packages/cv2
. Es klappt.
Ich hatte das gleiche Problem. Folgendes habe ich getan:
Ich habe die pywin32 Wheel-Datei von hier heruntergeladen
Ich habe das Modul pywin32 deinstalliert. Zum Deinstallieren führen Sie den folgenden Befehl in der Eingabeaufforderung aus.
pip uninstall pywin32
Dann habe ich pywin32 neu installiert. Öffnen Sie zur Installation die Eingabeaufforderung in demselben Verzeichnis, in dem sich die pywin32-Raddatei befindet. Führen Sie dann den folgenden Befehl aus.
pip install <Name of the wheel file with extension>
Die Raddatei sieht folgendermaßen aus: piwin32-XXX-cpXX-none-win32.whl
Es löst das Problem für mich. Sie können es auch gerne ausprobieren. Ich hoffe es funktioniert auch für Sie.
Für mich bestand das Problem darin, dass ich verschiedene Versionen von Python im same Eclipse-Projekt verwendete. Mein Setup stimmte nicht mit der Project Properties und der Run Configuration Python-Version überein.
In Project> Properties> PyDev hatte ich den Interpreter auf Python2.7.11 gesetzt.
In Run Configurations> Interpreter , ich habe den Default Interpreter verwendet. Durch das Ändern auf Python 2.7.11 wurde das Problem behoben.
Ich hatte das gleiche Problem, als ich eine andere Version von Python 2.7.x auf meinem System mit einem 32-Bit-Windows-Installationsprogramm deinstallierte und erneut installierte. Ich habe den gleichen Fehler bei den meisten meiner Import-Anweisungen erhalten. Ich deinstallierte das neu installierte Python und lud ein 64-Bit-Windows-Installationsprogramm herunter und installierte Python erneut.
Zuerst habe ich cv2.pyd
von /opencv/build/python/2.7/x86
nach C:/Python27/Lib/site-packeges
kopiert. Der Fehler war
"RuntimeError: Modul wurde mit API-Version 9 kompiliert, aber diese Version von Numpy ist 7
Dann habe ich numpy-1.8.0-win32-superpack-python2.7.exe
installiert und opencv funktioniert einwandfrei.
>>> import cv2
>>> print cv2.__version__
2.4.13
Es hat eine sehr einfache Lösung ... nach der Installation von opencv
place
cv2.pyd
von C:\opencv\build\python\2.7\ **x64**
bis C:\Python27\Lib\site-packages
platzieren Sie statt cv2.pyd
von C:\opencv\build\python\2.7\ **x86**
bis C:\Python27\Lib\site-packages
Sie können opencv
von official oder inoffiziellen sites installieren.
Siehe this question und this issue, wenn Sie Anaconda
verwenden.