web-dev-qa-db-fra.com

ImportError: DLL Échec du chargement:% 1 n'est pas une application Win32 valide. Mais les DLL sont là

J'ai une situation très semblable à celle de ImportError: DLL échec du chargement:% 1 n'est pas une application Win32 valide , mais la réponse ne fonctionne pas pour moi.

Mon code Python dit:

import cv2

Mais cette ligne jette l'erreur indiquée dans le titre de cette question.

J'ai OpenCV installé dans C:\lib\opencv sur cette machine 64 bits. J'utilise Python 64 bits.

Ma variable PYTHONPATH: PYTHONPATH=C:\lib\opencv\build\python\2.7. Ce dossier contient cv2.pyd et c'est tout.

Variable My PATH: Path=%OPENCV_DIR%\bin;... Ce dossier contient 39 fichiers DLL tels que opencv_core246d.dll.

OPENCV_DIR a cette valeur: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

La solution à ImportError: DLL échec du chargement:% 1 n'est pas une application Win32 valide dit d'ajouter "le nouveau chemin binaire opencv (C:\opencv\build\bin\Release) à la variable d'environnement Windows PATH". Mais comme indiqué ci-dessus, j'ai déjà le dossier des binaires OpenCV (C:\lib\opencv\build\x64\vc11\bin) dans mon CHEMIN. Et mon installation OpenCV ne possède pas de dossier de publication (sauf un dossier vide sous build/Java).

Des idées sur ce qui ne va pas? Puis-je dire à Python de suivre verbalement le processus de chargement? Exactement ce que DLL cherche-t-il?

Merci, Lars

MODIFIER:

Je viens de remarquer que, selon http://www.dependencywalker.com/ , le cv2.pyd dans C:\lib\opencv\build\python\2.7 est en 32 bits, alors que la machine et le Python que j'utilise sont en 64 bits. Est-ce que cela pourrait être le problème? Et si oui, où puis-je trouver une version 64 bits de cv2.pyd?

94
LarsH

Fichiers binaires Windows non officiels pour les packages d'extension Python

vous pouvez trouver toutes les bibliothèques python d'ici

75
Kill Console

Veuillez vérifier si la version de python que vous utilisez est également en 64 bits. Sinon, cela pourrait être le problème. Vous utiliseriez une version python 32 bits et auriez installé des fichiers binaires 64 bits pour la bibliothèque OPENCV. 

34
Clive Verghese

Wow, j'ai trouvé encore un autre cas pour ce problème. Aucun de ce qui précède n'a fonctionné. Finalement, j'ai utilisé la capacité de python à introspecter ce qui était chargé. Pour Python 2.7, cela signifie:

import imp
imp.find_module("cv2")

Cela a créé un fichier "cv2.pyd" complètement inattendu dans un répertoire Anaconda DLL qui n'a pas été touché par plusieurs tentatives de désinstallation/installation. Python cherchait là-bas en premier et ne trouvait pas ma bonne installation. J'ai supprimé ce fichier cv2.pyd et essayé à nouveau imp.find_module ("cv2") et python a immédiatement trouvé le bon fichier et cv2 a commencé à fonctionner.

Donc, si aucune autre solution ne fonctionne pour vous, veillez à utiliser l'introspection de python pour voir le fichier que python tente de charger.

13
Ezekiel Kruglick

Je viens d'avoir ce problème, il s'avère que c'était juste parce que j'utilisais la version x64 du fichier opencv. J'ai essayé le x86 et cela a fonctionné.

6
olive_tree

Dans mon cas, j’ai le python 64 bits, et c’est la mauvaise version de Lxml - j’aurais dû utiliser la version x64 de cette version également. J'ai résolu ce problème en téléchargeant la version 64 bits de lxml ici:

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

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

C'était la réponse la plus simple à un problème frustrant.

6
Amalgovinus

Si votre système de construction (CMake dans mon cas) copie le fichier de <name>.dll à <name>.pyd, vous obtiendrez cette erreur si le fichier d'origine n'était pas réellement une dll. Dans mon cas, la construction de bibliothèques partagées a été désactivée, le fichier sous-jacent était donc un *.lib.

J'ai découvert cette erreur en chargeant le fichier pyd dans DependencyWalker et en constatant qu'elle n'était pas valide.

2

J'ai copié le fichier cv2.pyd à partir du dossier /opencv/build/python/2.7/x86 au lieu du dossier /x64 dans le dossier C:/Python27/Lib/site-packeges. J'ai suivi le reste des instructions fournies ici .

Ajouté par quelqu'un d'autre, non vérifié: Je copie également le fichier cv2.pyd dans le dossier C:/Python27/Lib/site-packages/cv2. Ça marche.

2

J'ai eu le même problème. Voici ce que j'ai fait:

  1. J'ai téléchargé le fichier de roue pywin32 à partir de ici , puis

  2. J'ai désinstallé le module pywin32. Pour désinstaller, exécutez la commande suivante dans l'invite de commande.

    pip uninstall pywin32

  3. Ensuite, j'ai réinstallé pywin32. Pour l'installer, ouvrez l'invite de commande dans le même répertoire que le fichier de la roue pywin32. Puis exécutez la commande suivante.

    pip install <Name of the wheel file with extension> Le fichier Wheel sera comme: piwin32-XXX-cpXX-none-win32.whl

Cela résout le problème pour moi. Vous pouvez également essayer. J'espère que cela fonctionne pour vous aussi.

2
Abhishek Kashyap

Pour moi, le problème était que j'utilisais différentes versions de Python dans le projet même Eclipse. Ma configuration n'était pas compatible avec les versions Propriétés du projet et Exécuter la configuration Python.

Dans Projet> Propriétés> PyDev , l’interpréteur était réglé sur Python2.7.11.

Dans Exécuter Configurations> Interpreter , j'utilisais l'interpréteur par défaut. Le passage à Python 2.7.11 a résolu le problème.

1
Al Lelopath

J'ai rencontré le même problème lorsque j'ai désinstallé et réinstallé une version différente de 2.7.x de Python sur mon système à l'aide d'un programme d'installation Windows 32 bits. J'ai eu la même erreur sur la plupart de mes déclarations d'importation . J'ai désinstallé le Python nouvellement installé et téléchargé un programme d'installation Windows 64 bits et réinstallé Python et cela a fonctionné . J'espère que cela vous aide.

1
user3233042

J'ai d'abord copié cv2.pyd de /opencv/build/python/2.7/x86 à C:/Python27/Lib/site-packeges. L'erreur était 

"RuntimeError: module compilé avec l'API version 9 mais cette version de numpy est 7"

Ensuite, j'ai installé numpy-1.8.0-win32-superpack-python2.7.exe et opencv fonctionne bien.

>>> import cv2
>>> print cv2.__version__
2.4.13
0
alireza

Il a une solution très simple . Après avoir installé opencvplace

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

au lieu de, placez cv2.pyd de C:\opencv\build\python\2.7\ **x86** à C:\Python27\Lib\site-packages 

0
sharat kanthi
  1. Assurez-vous que vous avez bien installé la version 2.7.12 ou une version antérieure de python, sinon vous obtiendrez définitivement cette erreur.
  2. Assurez-vous que le client Oracle est installé à 64 bits si le système d'exploitation est à 64 bits.
  3. Assurez-vous que le compilateur Microsoft Visual C++ pour Python 2.7 est 64 bits pour Os 64 bits ou 32 bits pour 32 bits . Remarque: - SI votre système d'exploitation est 64 bits, installez tous les packages de 64 bits ou si Os est 32 bits, installez 32 paquet de bits.
0
Ranjan

Vous pouvez installer opencv à partir de official ou non officiel sites.

Reportez-vous à this question et this issue si vous utilisez Anaconda.

0
Ramesh-X