it-swarm.com.de

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

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

BEARBEITEN:

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?

94
LarsH
75
Kill Console

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. 

34
Clive Verghese

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.

13

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.

6
olive_tree

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.

6
Amalgovinus

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.

2

Ich hatte das gleiche Problem. Folgendes habe ich getan:

  1. Ich habe die pywin32 Wheel-Datei von hier heruntergeladen

  2. Ich habe das Modul pywin32 deinstalliert. Zum Deinstallieren führen Sie 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 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.

2

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.

1
Al Lelopath

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.

1
user3233042

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
0
alireza

Es hat eine sehr einfache Lösung ... nach der Installation von opencvplace

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 

0
sharat kanthi
  1. Vergewissern Sie sich, dass Sie Python 2.7.12 oder eine niedrigere Version installiert haben. Andernfalls wird diese Fehlermeldung 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 der 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 Pakete von 64-Bit oder wenn Os 32-Bit-Installation ist Bit-Paket.
0
Ranjan

Sie können opencv von official oder inoffiziellen sites installieren.

Siehe this question und this issue, wenn Sie Anaconda verwenden.

0
Ramesh-X