ImportError: DLL-Ladevorgang fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung. Aber die DLLs sind da


112

Ich habe eine ähnliche Situation wie bei ImportError: Das Laden der DLL ist fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung , aber die Antwort dort funktioniert bei mir nicht.

Mein Python-Code sagt:

import cv2

Diese Zeile löst jedoch den im Titel dieser Frage gezeigten Fehler aus.

Ich habe OpenCV C:\lib\opencvauf diesem 64-Bit-Computer installiert . Ich verwende 64-Bit-Python.

Meine PYTHONPATH-Variable : PYTHONPATH=C:\lib\opencv\build\python\2.7. Dieser Ordner enthält cv2.pydund das ist alles.

Meine PATH-Variable: Path=%OPENCV_DIR%\bin;...Dieser Ordner enthält 39 DLL-Dateien wie z opencv_core246d.dll.

OPENCV_DIR hat diesen Wert : OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

Die Lösung bei ImportError: Das Laden der DLL ist fehlgeschlagen:% 1 ist keine gültige Win32-Anwendung , die angibt, "den neuen opencv-Binärpfad ( C:\opencv\build\bin\Release) zur Windows PATH-Umgebungsvariablen hinzuzufügen ". Aber wie oben gezeigt, habe ich bereits den OpenCV-Binärordner ( C:\lib\opencv\build\x64\vc11\bin) in meinem PATH. 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? Nach welchen DLLs sucht es genau?

Danke, Lars

BEARBEITEN:

Mir ist gerade aufgefallen, dass laut http://www.dependencywalker.com/ das cv2.pydIn C:\lib\opencv\build\python\2.732-Bit ist, während der Computer und der Python, den ich verwende, 64-Bit sind. Könnte das das Problem sein? Und wenn ja, wo finde ich eine 64-Bit-Version von cv2.pyd?


9
Klicken Sie hier und finden Sie die 64-Bit-OpenCV
Kill Console

1
@ KillConsole: Danke, ich werde es versuchen. Da das von mir heruntergeladene Installationspaket sowohl x86- als auch x64-Unterordner enthielt, nahm ich an, dass es alles enthielt, was für 64-Bit erforderlich war. Scheinbar nicht. Hurra, das hat es behoben! Jetzt geht es weiter mit "ImportError: numpy.core.multiarray konnte nicht importiert werden", also werde ich dieselbe Site für 64-Bit-numpy ausprobieren. Wenn Sie aus Ihrem Kommentar eine Antwort machen, werde ich ihn positiv bewerten und akzeptieren.
LarsH

Welche Python-Version haben Sie verwendet? (nicht in Bezug auf Prozessor-Bits-Version)

1
@Begueradj: 2.7, wenn du das fragst.
LarsH

1
Ich hatte das gleiche Problem und keine der folgenden Lösungen hat mir geholfen. Es stellte sich heraus, dass ich PYTHONPATHfrüher die Einträge enthielt, die die Installation der SimpleCV-Bibliothek dort hinterlassen hat. Obwohl ich SimpleCV bereits deinstalliert habe, PYTHONPATHwurde das nicht wiederhergestellt und zeigte auf einige Verzeichnisse mit widersprüchlichen Versionen von OpenCV, die von der SimpleCV-Installation hinterlassen wurden. Lösung: Löschen Sie die PYTHONPATH.
Anton Daneyko

Antworten:



41

Bitte überprüfen Sie, ob die von Ihnen verwendete Python-Version auch 64-Bit ist. Wenn nicht, könnte das das Problem sein. Sie würden eine 32-Bit-Python-Version verwenden und 64-Bit-Binärdateien für die OPENCV-Bibliothek installiert haben.


Wie in der Frage erwähnt, habe ich 64-Bit-Python verwendet.
LarsH

16

Wow, ich habe noch einen weiteren Fall für dieses Problem gefunden. Keines der oben genannten hat funktioniert. Schließlich nutzte ich Pythons Fähigkeit, um zu überprüfen, was geladen wurde. Für Python 2.7 bedeutet dies:

import imp
imp.find_module("cv2")

Dies ergab eine völlig unerwartete "cv2.pyd" -Datei in einem Anaconda-DLL-Verzeichnis, die nicht von mehreren Deinstallations- / Installationsversuchen berührt wurde. Python suchte zuerst dort und fand meine gute Installation nicht. Ich habe diese cv2.pyd-Datei gelöscht und imp.find_module ("cv2") erneut versucht. Python hat sofort die richtige Datei gefunden und cv2 hat funktioniert.

Wenn also keine der anderen Lösungen für Sie funktioniert, stellen Sie sicher, dass Sie Python Introspection verwenden, um zu sehen, welche Datei Python zu laden versucht.


3
Ich hatte ein Problem, bei dem versucht wurde, eine Version der Datei vollständig in einem anderen Ordner auszuführen. Diese Lösung hier half mir herauszufinden, was wirklich los war. Vielen Dank!
Emad Y

2
Dies ist eine ausgezeichnete Antwort, danke! Ich bin auf ein Problem mit PyDev gestoßen, bei dem "ctypes" aus einer inkompatiblen Installation von Python geladen wurde, und mir wurde klar, dass ich meinen Interpreter für die Verwendung von WinPython einrichten musste, wodurch das Problem behoben wurde.
eacousineau

7

In meinem Fall habe ich 64-Bit-Python und es war lxml, das die falsche Version war - ich hätte auch die x64-Version davon verwenden sollen. 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.


6

Ich hatte gerade dieses Problem, es stellte sich heraus, dass ich nur die x64-Version der opencv-Datei verwendete. Versuchte das x86 und es hat funktioniert.


2

Wenn Ihr Build-System (in meinem Fall CMake) die Datei von <name>.dllnach kopiert <name>.pyd, wird dieser Fehler angezeigt, wenn die Originaldatei keine DLL war. In meinem Fall wurde das Erstellen gemeinsam genutzter Bibliotheken deaktiviert, sodass die zugrunde liegende Datei tatsächlich eine war*.lib .

Ich habe diesen Fehler entdeckt, indem ich die pydDatei in DependencyWalker geladen und festgestellt habe, dass sie nicht gültig ist.


2

Ich hatte das gleiche Problem. Folgendes habe ich getan:

  1. Ich heruntergeladen pywin32 Rad - Datei von hier , dann

  2. Ich habe das pywin32- Modul deinstalliert . Führen Sie zum Deinstallieren den folgenden Befehl in der Eingabeaufforderung aus.

    pip uninstall pywin32

  3. 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 lautet wie folgt : piwin32-XXX-cpXX-none-win32.whl

Es löst das Problem für mich. Vielleicht möchten Sie es auch ausprobieren. Hoffe, es funktioniert auch für Sie.


2

Ich habe die cv2.pydDatei aus dem /opencv/build/python/2.7/x86Ordner anstatt aus dem /x64Ordner in den Ordner kopiert C:/Python27/Lib/site-packeges. Ich habe die restlichen Anweisungen hier befolgt .

Von einer anderen Person hinzugefügt, nicht überprüft: Ich kopiere auch eine Datei cv2.pydin einen Ordner C:/Python27/Lib/site-packages/cv2. Es klappt.


1

Für mich war das Problem, dass ich verschiedene Versionen von Python im selben Eclipse-Projekt verwendete. Mein Setup stimmte nicht mit den Projekteigenschaften und den Python-Versionen " Konfiguration ausführen" überein .

Unter Projekt> Eigenschaften> PyDev hatte ich den Interpreter auf Python2.7.11 eingestellt.

Unter Run Configurations> Interpreter habe ich den Standardinterpreter verwendet. Durch Ändern in Python 2.7.11 wurde das Problem behoben.


1

Ich hatte das gleiche Problem, als ich eine andere Version von 2.7.x Python auf meinem System mit einem 32-Bit-Windows-Installationsprogramm deinstallierte und neu installierte. Bei den meisten meiner Importanweisungen ist der gleiche Fehler aufgetreten. Ich habe das neu installierte Python deinstalliert und ein 64-Bit-Windows-Installationsprogramm heruntergeladen und Python erneut installiert, und es hat funktioniert. Hoffe das hilft dir.


1

Ich hatte also Probleme, vtk unter Windows zu installieren (da ich Python 3.7 verwende, ist bisher keine Binärdatei verfügbar, nur für ältere Python-Versionen. Pip install vtk funktioniert nicht).

Ich habe Python in meinem cmd geschrieben:

Python 3.7.3 on win32

Ich weiß jetzt, dass Python 3.7.3 auf 32 Bit läuft.

Ich habe dann das richtige Rad bei VTK-8.2.0-cp37-cp37m-win32.whl heruntergeladen

Als nächstes habe ich das Rad installiert:

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

Dann habe ich es getestet und es hat funktioniert:

python
import vtk


0

Zuerst habe ich cv2.pydvon /opencv/build/python/2.7/x86nach kopiert C:/Python27/Lib/site-packeges. Der Fehler war

"RuntimeError: Modul kompiliert gegen API Version 9, aber diese Version von numpy ist 7"

Dann habe ich installiert numpy-1.8.0-win32-superpack-python2.7.exeund opencv funktioniert gut.

>>> import cv2
>>> print cv2.__version__
2.4.13


0
  1. Bitte stellen Sie sicher, dass Sie Python 2.7.12 oder eine niedrigere Version installiert haben. Andernfalls wird dieser Fehler definitiv angezeigt.
  2. Stellen Sie sicher, dass der Oracle-Client 64-Bit installiert ist, wenn das Betriebssystem 64-Bit ist.
  3. Stellen Sie sicher, dass Microsoft Visual C ++ - Compiler für Python 2.7 64 für Bit für 64-Bit-Os oder 32 Bit für 32 Bit ist. Hinweis: - Wenn Ihr Betriebssystem 64-Bit ist, installieren Sie alle 64-Bit-Pakete oder wenn Os 32-Bit ist, installieren Sie das 32-Bit-Paket.

0

Es hat eine sehr einfache Lösung. Nach der Installation opencv platzieren

cv2.pydvon C:\opencv\build\python\2.7\ **x64**bisC:\Python27\Lib\site-packages

stattdessen cv2.pydvon C:\opencv\build\python\2.7\ **x86**bis platzierenC:\Python27\Lib\site-packages


0

Ich habe diesen Fehler beim Importieren von MySQLdb erhalten.

Was für mich funktioniert hat, war Python zu deinstallieren und dann neu zu installieren.

Ich habe den Fehler nach der Installation von npm ( https://www.npmjs.com/get-npm ) erhalten. Eine Sache, die es tat, war Python zu installieren, obwohl ich es bereits hatte.


0

Das hat bei mir funktioniert. Ich habe verschiedene Methoden ausprobiert, aber dies war meine beste Lösung.

Öffnen Sie die Eingabeaufforderung und geben Sie Folgendes ein: pip install opencv-python. (Stellen Sie sicher, dass Ihr Internet eingeschaltet ist). Versuchen Sie danach erneut, es zu importieren.


0

Dieser hat mit mir gearbeitet

pip install -- pywin32==227

1
Willkommen bei Stack Overflow. Warum hat es bei dir funktioniert? Könnten Sie dieser Antwort bitte weitere Details hinzufügen?
Azametzin

-2

Ich habe die Lösung gefunden. Vielleicht können Sie versuchen, das cmd-Fenster anstelle des Anaconda-Eingabeaufforderungsfensters zu verwenden, um Ihren ersten Scrapy-Test zu starten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.