ImportError: Încărcarea DLL a eșuat: %1 nu este o aplicație Win32 validă. Dar DLL-urile sunt acolo (Programare, Python, Opencv, Dll, Calea)

LarsH a intrebat.

Am o situație foarte asemănătoare cu cea de la ImportError: DLL load failed: %1 is not a valid Win32 application, dar răspunsul de acolo nu funcționează pentru mine.

Codul meu Python spune:

import cv2

Dar acea linie aruncă eroarea afișată în titlul acestei întrebări.

Am OpenCV instalat în C:libopencv pe această mașină pe 64 de biți. Folosesc Python pe 64 de biți.

Variabila mea PYTHONPATH: PYTHONPATH=C:libopencvbuildpython2.7. Acest folder conține cv2.pyd și asta e tot.

Variabila mea PATH: Path=%OPENCV_DIR%bin;... Acest folder conține 39 de fișiere DLL, cum ar fi opencv_core246d.dll.

OPENCV_DIR are această valoare: OPENCV_DIR=C:libopencvbuildx64vc11.

Soluția la ImportError: DLL load failed: %1 is not a valid Win32 application spune să se adauge „the new opencv binaries path (C:opencvbuildbinRelease) la variabila de mediu Windows PATH”. Dar, după cum se arată mai sus, am deja folderul OpenCV binaries (C:libopencvbuildx64vc11bin) în PATH-ul meu. Iar instalarea mea OpenCV nu are niciun dosar Release (cu excepția unuia gol sub build/java).

Aveți vreo idee cu privire la ce nu merge bine? Pot să îi spun lui Python să urmărească verosimil procesul de încărcare? Ce DLL-uri caută mai exact?

Mulțumesc, Lars

EDIT:

Tocmai am observat că, în conformitate cu http://www.dependencywalker.com/, se poate spune că cv2.pyd din C:libopencvbuildpython2.7 este pe 32 de biți, în timp ce mașina și Python-ul pe care îl folosesc sunt pe 64 de biți. Ar putea fi asta problema? Și dacă da, unde pot găsi o versiune pe 64 de biți a cv2.pyd?

Comentarii

  • faceți clic pe aici și găsiți opencv pe 64 de biți –  > Por Kill Console.
  • @KillConsole: mulțumesc, o să încerc. Din moment ce pachetul de instalare pe care l-am descărcat avea atât subfoldere x86 cât și x64, am presupus că includea tot ce era de avut pentru 64 de biți. Se pare că nu. Ura, asta a rezolvat problema! Acum am ajuns la „ImportError: numpy.core.multiarray failed to import”, așa că voi încerca același site pentru numpy pe 64 de biți. Dacă transformi comentariul tău într-un răspuns, voi da upvote și îl voi accepta. –  > Por LarsH.
  • ce versiune de Python ați folosit ? (nu în ceea ce privește versiunea pe biți de procesor) – user3522371
  • @Begueradj: 2.7, dacă asta întrebi. –  > Por LarsH.
  • Am avut aceeași problemă și niciuna dintre soluțiile de mai jos nu m-a ajutat, așa că s-a dovedit că PYTHONPATH obișnuia să conțină intrările pe care instalarea bibliotecii SimpleCV le-a lăsat acolo. În ciuda faptului că am dezinstalat deja biblioteca SimpleCV, nu a apărut nici o problemă. PYTHONPATH nu a fost restaurat și arăta spre niște directoare cu versiuni conflictuale de OpenCV lăsate de instalarea SimpleCV. Soluție: am șters fișierele PYTHONPATH. –  > Por Anton Daneyko.
22 răspunsuri
Consola Kill

Comentarii

  • acest lucru a ajutat cu adevărat. Nu sunt sigur ce a fost greșit. Am avut o versiune de opencv, anaconda3, python3. Am instalat opencv_python-3.3.0+contrib-cp35-cp35m-win_amd64 din lista de pachete de mai sus și am reușit să import cv2 cu succes după ore de luptă. Mulțumesc mult. –  > Por emeralddove.
Clive Verghese

Vă rugăm să verificați dacă versiunea de python pe care o utilizați este, de asemenea, de 64 de biți. Dacă nu, atunci aceasta ar putea fi problema. Ar trebui să utilizați o versiune python pe 32 de biți și să fi instalat un binariu pe 64 de biți pentru biblioteca OPENCV.

Comentarii

  • Așa cum am menționat în întrebare, am folosit Python pe 64 de biți. –  > Por LarsH.
Ezekiel Kruglick

Wow, am găsit încă un caz pentru această problemă. Niciuna dintre cele de mai sus nu a funcționat. În cele din urmă am folosit abilitatea lui python de a introspecta ceea ce era încărcat. Pentru python 2.7 acest lucru înseamnă:

import imp
imp.find_module("cv2")

Acest lucru a scos la iveală un fișier „cv2.pyd” complet neașteptat într-un director Anaconda DLL care nu a fost atins de mai multe încercări de dezinstalare/instalație. Python căuta mai întâi acolo și nu găsea instalarea mea bună. Am șters acel fișier cv2.pyd și am încercat din nou imp.find_module(„cv2”) și python a găsit imediat fișierul corect și cv2 a început să funcționeze.

Așadar, dacă niciuna dintre celelalte soluții nu funcționează pentru dumneavoastră, asigurați-vă că utilizați introspecția python pentru a vedea ce fișier încearcă python să încarce.

Comentarii

  • Am avut o problemă în care încerca să ruleze o versiune a fișierului într-un dosar complet diferit. Soluția de aici m-a ajutat să-mi dau seama ce se întâmpla cu adevărat. Vă mulțumim! –  > Por Emad Y.
  • Acesta este un răspuns excelent, mulțumesc! M-am confruntat cu o problemă cu PyDev în care se încărca „ctypes” dintr-o instalare incompatibilă de python și am realizat că trebuia să îmi configurez interpretorul pentru a utiliza WinPython, ceea ce a rezolvat problema. –  > Por eacousineau.
Amalgovinus

În cazul meu, am python pe 64 de biți, iar lxml era versiunea greșită – ar fi trebuit să folosesc și versiunea x64 a acestuia. Am rezolvat acest lucru descărcând versiunea pe 64 de biți a lxml de aici:

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

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

Acesta a fost cel mai simplu răspuns la o problemă frustrantă.

olive_tree

Tocmai am avut această problemă, se pare că a fost doar pentru că am folosit versiunea x64 a fișierului opencv. Am încercat versiunea x86 și a funcționat.

Abhishek Kashyap

Am avut aceeași problemă. Iată ce am făcut:

  1. Am descărcat fișierul pywin32 Wheel de la aici, apoi

  2. am dezinstalat fișierul pywin32 modul. Pentru a dezinstala, executați următoarea comandă în Command Prompt.

    pip uninstall pywin32

  3. Apoi, am reinstalat pywin32. Pentru a-l instala, deschideți Command Prompt în același director în care se află fișierul wheel pywin32. Apoi executați următoarea comandă.

    pip install <Name of the wheel file with extension>Fișierul wheel va fi ca: piwin32-XXX-cpXX-none-win32.whl

Aceasta rezolvă problema pentru mine. De asemenea, ați putea dori să încercați. Sper să funcționeze și pentru tine.

MatrixManAtYrService

Dacă sistemul dumneavoastră de compilare (CMake în cazul meu) copiază fișierul de la <name>.dll la <name>.pyd, veți primi această eroare dacă fișierul original nu era de fapt un dll. În cazul meu, construirea bibliotecilor partajate a fost dezactivată, astfel încât fișierul de bază era de fapt un *.lib.

Am descoperit această eroare prin încărcarea fișierului pyd în DependencyWalker și am constatat că nu era valid.

Autonomă

Am copiat cv2.pyd fișierul din /opencv/build/python/2.7/x86 în loc de /x64 folder la C:/Python27/Lib/site-packeges. Am urmat restul instrucțiunilor furnizate aici.

Adăugat de altcineva, neverificat: De asemenea, am copiat fișierul cv2.pyd în folderul C:/Python27/Lib/site-packages/cv2. Acesta funcționează.

Karthik Suresh

Actualizați numpy.

pip install numpy --upgrade

Lucrează pentru mine!!!

Mohammed Said El-Sharkawy

Acesta a funcționat cu mine

pip install -- pywin32==227

Comentarii

  • Bine ați venit la Stack Overflow. De ce a funcționat pentru tine? Te rog, ai putea adăuga mai multe detalii la acest răspuns? –  > Por Azametzin.
  • Vă mulțumim! Acest lucru a funcționat de fapt pentru mine. Am descoperit că foloseam pywin 228, iar downgrade-ul la 227 a făcut ca totul să funcționeze din nou. Evident, ceva trebuie să fi fost adăugat la 228 care a rupt compatibilitatea înapoi, dar nu am nici o idee despre ce. –  > Por Terje Mikal.
Al Lelopath

Pentru mine, problema a fost că foloseam versiuni diferite de Python în același proiect Eclipse. Configurația mea nu era în concordanță cu Proprietățile proiectului și de Run Configuration versiunile Python.

În Proiect > Proprietăți > PyDev, aveam interpretorul setat la Python2.7.11.

În Run Configurations > Interpreter, foloseam interpretul implicit. Schimbându-l în Python 2.7.11 am rezolvat problema.

user3233042

M-am confruntat cu aceeași problemă atunci când am dezinstalat și reinstalat o versiune diferită de 2.7.x de Python pe sistemul meu folosind un program de instalare Windows pe 32 de biți. Am primit aceeași eroare la majoritatea instrucțiunilor de import. am dezinstalat Python nou instalat și am descărcat un program de instalare Windows pe 64 de biți și am reinstalat din nou Python și a funcționat. sper că acest lucru vă ajută.

sqp_125

Deci, am avut probleme în instalarea vtk sub Windows (deoarece folosesc python 3.7 nu există nici un binar disponibil până acum doar pentru versiunile mai vechi de python pip install vtk nu funcționează)

Am făcut scris python în cmd-ul meu:

Python 3.7.3 on win32

Așa că acum știu că am python 3.7.3 care rulează pe un 32 de biți.

Apoi am descărcat roata corectă de la VTK‑8.2.0‑cp37‑cp37m‑win32.whl

Apoi am instalat roata respectivă:

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

Apoi am testat-o și a funcționat:

python
import vtk

Joel

Am întâmpinat aceeași problemă în timp ce încercam să scriu un cod referitor la Speech_to_Text.

Soluția a fost foarte simplă. Dezinstalați pywin32 anterior folosind metoda pip

pip uninstall pywin32

Cea de mai sus îl va elimina pe cel existent, care este implicit pentru computerele de 32 de biți. Și instalați-l din nou folosind

pip install pywin32

Aceasta îl va instala pe cel pentru calculatorul de 64 de biți pe care îl folosiți.

alireza

Mai întâi am copiat cv2.pyd de pe /opencv/build/python/2.7/x86 la C:/Python27/Lib/site-packeges. Eroarea a fost

„RuntimeError: modulul a fost compilat pentru versiunea 9 a API-ului, dar această versiune a numpy este 7”

Apoi am instalat numpy-1.8.0-win32-superpack-python2.7.exe și opencv funcționează bine.

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

Ramesh-X

Puteți instala opencv de pe oficial sau neoficial oficiale sau neoficiale.

Consultați această întrebare și acest problemă dacă utilizați Anaconda.

Ranjan
  1. Vă rugăm să vă asigurați că ați instalat python 2.7.12 sau o versiune mai mică, altfel veți primi cu siguranță această eroare.
  2. Asigurați-vă că clientul Oracle este instalat pe 64 de biți dacă sistemul de operare este pe 64 de biți.
  3. Asigurați-vă că Microsoft Visual C++ Compiler for Python 2.7 este de 64 de biți pentru sistemele de operare de 64 de biți sau de 32 de biți pentru 32 de biți.Notă: – Dacă sistemul de operare este de 64 de biți, instalați toate pachetele de 64 de biți sau dacă sistemul de operare este de 32 de biți, instalați pachetul de 32 de biți.

sharat kanthi

Are o soluție foarte simplă.după instalarea opencvpuneți

cv2.pyd de pe C:opencvbuildpython2.7 **x64** la C:Python27Libsite-packages

în loc de, place cv2.pyd de la C:opencvbuildpython2.7 **x86** la C:Python27Libsite-packages

user984003

Am primit această eroare când am încercat să import MySQLdb.

Ceea ce a funcționat pentru mine a fost să dezinstalez Python și apoi să îl reinstalez.

Am primit eroarea după ce am instalat npm (https://www.npmjs.com/get-npm). Un lucru pe care l-a făcut a fost să instaleze Python, deși îl aveam deja.

Hub Amp

Acest lucru a funcționat pentru mine. Am încercat diferite metode, dar aceasta a fost cea mai bună soluție.

Deschideți promptul de comandă și tastați următoarele;pip install opencv-python. (asigurați-vă că internetul este pornit).după care încercați să o importați din nou.

DaveR

S-ar putea, de asemenea, să se întâmple ca anaconda versiune este 32 bit când ar trebui să fie 64 bit.

Michael Ye

Am găsit soluția, poate că poți încerca să folosești fereastra cmd mai degrabă decât fereastra de prompt anaconda pentru a începe primul test scrapy.