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


112

J'ai une situation très similaire à celle de ImportError: le chargement de la DLL a échoué:% 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 contientcv2.pyd et c'est tout.

Ma variable PATH: Path=%OPENCV_DIR%\bin;...ce dossier contient 39 fichiers DLL tels queopencv_core246d.dll .

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

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

Des idées sur ce qui ne va pas? Puis-je dire à Python de suivre de façon verbale le processus de chargement? Qu'est-ce que la DLL recherche exactement?

Merci, Lars

ÉDITER:

Je viens de remarquer que, selon http://www.dependencywalker.com/ , l' cv2.pyden C:\lib\opencv\build\python\2.7est de 32 bits, alors que la machine et le Python sont en cours d' exécution , je suis 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?


9
cliquez ici et retrouvez l'opencv 64 bits
Kill Console du

1
@KillConsole: merci, je vais l'essayer. Étant donné que le package d'installation que j'ai téléchargé contenait à la fois des sous-dossiers x86 et x64, j'ai supposé qu'il comprenait tout ce qu'il y avait à avoir pour 64 bits. Apparemment non. Hourra, cela a réglé le problème! Nous sommes maintenant sur "ImportError: numpy.core.multiarray n'a pas réussi à importer", donc je vais essayer le même site pour numpy 64 bits. Si vous transformez votre commentaire en réponse, je vais voter pour et l'accepter.
LarsH du

quelle version de Python avez-vous utilisée? (pas en termes de version de bits de processeur)

1
@Begueradj: 2.7, si c'est ce que vous demandez.
LarsH

1
J'ai eu le même problème et aucune des solutions ci-dessous ne m'a aidé, il s'est donc avéré que mon avait l' PYTHONPATHhabitude de contenir les entrées que l'installation de la bibliothèque SimpleCV y avait laissées. Bien que j'aie déjà désinstallé le SimpleCV, le PYTHONPATHn'a pas été restauré et pointait vers certains répertoires avec des versions en conflit d'OpenCV laissées par l'installation de SimpleCV. Solution: effacez le fichier PYTHONPATH.
Anton Daneyko le

Réponses:



41

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


Comme mentionné dans la question, j'utilisais Python 64 bits.
LarsH

17

Wow, j'ai trouvé encore un autre cas pour ce problème. Aucun de ces éléments 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 généré un fichier "cv2.pyd" complètement inattendu dans un répertoire DLL Anaconda qui n'a pas été touché par plusieurs tentatives de désinstallation / installation. Python y cherchait 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 des autres solutions ne fonctionne pour vous, assurez-vous d'utiliser l'introspection python pour voir quel fichier python essaie de charger.


4
J'ai eu un problème s'il essayait d'exécuter complètement une version du fichier dans un dossier différent. Cette solution m'a aidé à comprendre ce qui se passait vraiment. Merci!
Emad Y

3
C'est une excellente réponse, merci! J'ai rencontré un problème avec PyDev où il chargeait des "ctypes" à partir d'une installation incompatible de python, et j'ai réalisé que je devais configurer mon interpréteur pour utiliser WinPython, ce qui l'a corrigé.
eacousineau

7

Dans mon cas, j'ai python 64 bits, et c'était lxml qui n'était pas la bonne version - j'aurais dû utiliser la version x64 de cela aussi. 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

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é.


2

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 création de bibliothèques partagées a été désactivée, de sorte que le fichier sous-jacent était en fait un*.lib .

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


2

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

  1. J'ai téléchargé le fichier Pywin32 Wheel à partir d' ici , puis

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

    pip uninstall pywin32

  3. Ensuite, j'ai réinstallé pywin32 . Pour l'installer, ouvrez l'invite de commande dans le même répertoire où se trouve le fichier de roue pywin32. Exécutez ensuite la commande suivante.

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

Cela résout le problème pour moi. Vous aimerez peut-être aussi l'essayer. J'espère que cela fonctionnera pour vous aussi.


2

J'ai copié le cv2.pydfichier du /opencv/build/python/2.7/x86dossier au lieu du /x64dossier vers 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.pyddans le dossier C:/Python27/Lib/site-packages/cv2. Ça marche.


1

Pour moi, le problème était que j'utilisais différentes versions de Python dans le même projet Eclipse. Ma configuration n'était pas cohérente avec les propriétés du projet et les versions d'exécution de la configuration Python.

Dans Projet> Propriétés> PyDev , j'avais défini l'interpréteur sur Python2.7.11.

Dans Run Configurations> Interpreter , j'utilisais l'interpréteur par défaut. Le changer en Python 2.7.11 a résolu le problème.


1

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 à nouveau et cela a fonctionné. J'espère que cela vous aide.


1

J'ai donc eu des problèmes pour installer vtk sous Windows (comme j'utilise python 3.7, il n'y a pas de binaire disponible jusqu'à présent juste pour les anciennes versions de python pip install vtk ne fonctionne pas)

J'ai écrit python dans mon cmd:

Python 3.7.3 on win32

Donc, je sais maintenant que python 3.7.3 fonctionne sur un 32 bits.

J'ai ensuite téléchargé la bonne roue à VTK-8.2.0-cp37-cp37m-win32.whl

Ensuite, j'ai installé cette roue:

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

Ensuite, je l'ai testé et cela a fonctionné:

python
import vtk


0

J'ai d'abord copié cv2.pydde /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.exeet opencv fonctionne très bien.

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


0
  1. Veuillez vous assurer que vous avez installé python 2.7.12 ou une version inférieure, sinon vous obtiendrez définitivement cette erreur.
  2. Assurez-vous que le client Oracle est installé en 64 bits si le système d'exploitation est en 64 bits.
  3. Assurez-vous que le compilateur Microsoft Visual C ++ pour Python 2.7 est 64 pour bit pour 64 bits OS ou 32 bits pour 32 bits. Remarque: - SI votre OS est 64 bits, installez tous les packages de 64 bits ou si Os est 32 bits, installez un package 32 bits.

0

Il a une solution très simple. Après l'installation du opencv lieu

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

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


0

J'ai eu cette erreur en essayant d'importer MySQLdb.

Ce qui a fonctionné pour moi, c'est de désinstaller Python, puis de le réinstaller.

J'ai eu l'erreur après l'installation de npm ( https://www.npmjs.com/get-npm ). Une chose qu'il a faite a été d'installer Python même si je l'avais déjà.


0

Cela a fonctionné pour moi. J'ai essayé différentes méthodes mais c'était ma meilleure solution.

Ouvrez l'invite de commande et tapez ce qui suit; pip install opencv-python. (assurez-vous que votre connexion Internet est activée). après cela, essayez de l'importer à nouveau.


0

Celui-ci a travaillé avec moi

pip install -- pywin32==227

1
Bienvenue dans Stack Overflow. Pourquoi cela a fonctionné pour vous? S'il vous plaît, pourriez-vous ajouter plus de détails à cette réponse?
Azametzin le

-2

J'ai trouvé la solution, peut-être que vous pouvez essayer d'utiliser la fenêtre cmd plutôt que la fenêtre d'invite anaconda pour démarrer votre premier test de scrapy.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.