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?

LarsH
la source
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:

81

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

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

Kill Console
la source
cela a vraiment aidé. Je ne sais pas ce qui n'allait pas. J'avais une version d'opencv, anaconda3, python3. Installé opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64 à partir de la liste de paquets ci-dessus et a pu importer cv2 avec succès après des heures de lutte. Merci beaucoup.
emeralddove
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.

Clive Verghese
la source
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.

Ézéchiel Kruglick
la source
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.

Amalgovinus
la source
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é.

Olivier
la source
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.

MatrixManAtYrService
la source
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.

Abhishek Kashyap
la source
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.

Autonome
la source
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.

Al Lelopath
la source
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.

user3233042
la source
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
sqp_125
la source
1

Mettez à jour numpy.

pip install numpy --upgrade

Travaille pour moi!!

Karthik Suresh
la source
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
Alireza
la source
0

Vous pouvez installer à opencvpartir de sites officiels ou non officiels .

Reportez-vous à cette question et à ce problème si vous utilisez Anaconda.

Ramesh-X
la source
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.
Ranjan
la source
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

sharat kanthi
la source
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à.

user984003
la source
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.

user12907613
la source
0

Celui-ci a travaillé avec moi

pip install -- pywin32==227
Mohammed Said El-Sharkawy
la source
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.

Michael Ye
la source