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
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?
Fichiers binaires Windows non officiels pour les packages d'extension Python
vous pouvez trouver toutes les bibliothèques python d'ici
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.
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.
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é.
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.
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.
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.
J'ai eu le même problème. Voici ce que j'ai fait:
J'ai téléchargé le fichier de roue pywin32 à partir de ici , puis
J'ai désinstallé le module pywin32. Pour désinstaller, exécutez la commande suivante dans l'invite de commande.
pip uninstall pywin32
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.
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.
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.
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
Il a une solution très simple . Après avoir installé opencv
place
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
Vous pouvez installer opencv
à partir de official ou non officiel sites.
Reportez-vous à this question et this issue si vous utilisez Anaconda
.