ImportError: caricamento della DLL non riuscito:% 1 non è un'applicazione Win32 valida. Ma le DLL ci sono


112

Ho una situazione molto simile a quella in ImportError: caricamento della DLL non riuscito:% 1 non è un'applicazione Win32 valida , ma la risposta non funziona per me.

Il mio codice Python dice:

import cv2

Ma quella riga genera l'errore mostrato nel titolo di questa domanda.

Ho OpenCV installato C:\lib\opencvsu questa macchina a 64 bit. Sto usando Python a 64 bit.

La mia variabile PYTHONPATH: PYTHONPATH=C:\lib\opencv\build\python\2.7. Questa cartella contiene cv2.pyde basta.

La mia variabile PATH: Path=%OPENCV_DIR%\bin;...questa cartella contiene 39 file DLL come opencv_core246d.dll.

OPENCV_DIR ha questo valore: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

La soluzione in ImportError: caricamento della DLL non riuscito:% 1 non è un'applicazione Win32 valida dice di aggiungere "il nuovo percorso binari opencv ( C:\opencv\build\bin\Release) alla variabile di ambiente PATH di Windows". Ma come mostrato sopra, ho già la cartella dei binari di OpenCV ( C:\lib\opencv\build\x64\vc11\bin) nel mio PERCORSO. E la mia installazione di OpenCV non ha cartelle di rilascio (eccetto una vuota in build / java).

Qualche idea su cosa sta andando storto? Posso dire a Python di tracciare verbalmente il processo di caricamento? Che tipo di DLL sta cercando esattamente?

Grazie, Lars

MODIFICARE:

Ho appena notato che, in base alla http://www.dependencywalker.com/ , l' cv2.pydin C:\lib\opencv\build\python\2.7è a 32 bit, mentre la macchina e il Python sto correndo sono a 64-bit. Potrebbe essere questo il problema? E se è così, dove posso trovare una versione a 64 bit di cv2.pyd?


9
clicca qui e trova l'opencv a 64 bit
Kill Console

1
@KillConsole: grazie, ci proverò. Poiché il pacchetto di installazione che ho scaricato aveva sia le sottocartelle x86 che x64, ho pensato che includesse tutto ciò che c'era da avere per 64 bit. Apparentemente no. Evviva, questo l'ha risolto! Ora siamo a "ImportError: numpy.core.multiarray non riuscito a importare", quindi proverò lo stesso sito per numpy a 64 bit. Se trasformi il tuo commento in una risposta, lo voto a favore e lo accetto.
LarsH

quale versione di Python hai usato? (non in termini di versione bit del processore)

1
@Begueradj: 2.7, se è quello che stai chiedendo.
LarsH

1
Ho avuto lo stesso problema e nessuna delle soluzioni seguenti mi ha aiutato, quindi si è scoperto che il mio PYTHONPATHconteneva le voci che l'installazione della libreria SimpleCV ha lasciato lì. Nonostante avessi già disinstallato il SimpleCV, PYTHONPATHnon è stato ripristinato e puntava ad alcune directory con versioni in conflitto di OpenCV lasciate dall'installazione di SimpleCV. Soluzione: cancella il file PYTHONPATH.
Anton Daneyko,

Risposte:



41

Verifica se anche la versione di Python che stai utilizzando è a 64 bit. In caso contrario, potrebbe essere questo il problema. Utilizzeresti una versione di python a 32 bit e avresti installato un binario a 64 bit per la libreria OPENCV.


Come accennato nella domanda, stavo usando Python a 64 bit.
LarsH

17

Wow, ho trovato un altro caso per questo problema. Nessuno dei precedenti ha funzionato. Alla fine ho usato la capacità di Python di analizzare cosa veniva caricato. Per Python 2.7 questo significa:

import imp
imp.find_module("cv2")

Questo ha generato un file "cv2.pyd" completamente inaspettato in una directory DLL Anaconda che non è stata toccata da più tentativi di disinstallazione / installazione. Python stava cercando prima lì e non trovava la mia buona installazione. Ho cancellato il file cv2.pyd e ho provato di nuovo imp.find_module ("cv2") e Python ha immediatamente trovato il file giusto e cv2 ha iniziato a funzionare.

Quindi, se nessuna delle altre soluzioni funziona per te, assicurati di utilizzare l'introspezione di Python per vedere quale file Python sta cercando di caricare.


4
Ho riscontrato un problema durante il tentativo di eseguire completamente una versione del file in una cartella diversa. Questa soluzione qui mi ha aiutato a capire cosa stava realmente accadendo. Grazie!
Emad Y

3
Questa è un'ottima risposta, grazie! Mi sono imbattuto in un problema con PyDev in cui stava caricando "ctypes" da un'installazione incompatibile di python, e mi sono reso conto che dovevo impostare il mio interprete per utilizzare WinPython, che lo ha risolto.
eacousineau

7

Nel mio caso, ho python a 64 bit, ed era lxml che era la versione sbagliata - avrei dovuto usare anche la versione x64 di quella. Ho risolto questo problema scaricando la versione a 64 bit di lxml qui:

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

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

Questa è stata la risposta più semplice a un problema frustrante.


6

Ho appena avuto questo problema, si scopre che era solo perché stavo usando la versione x64 del file opencv. Ho provato l'x86 e ha funzionato.


2

Se il tuo sistema di compilazione (CMake nel mio caso) copia il file da <name>.dlla <name>.pyd, riceverai questo errore se il file originale non era effettivamente una dll. Nel mio caso, la creazione di librerie condivise è stata disattivata, quindi il file sottostante era in realtà un file *.lib.

Ho scoperto questo errore caricando il pydfile in DependencyWalker e scoprendo che non era valido.


2

Ho avuto lo stesso problema. Ecco cosa ho fatto:

  1. Ho scaricato il file pywin32 ruota dal qui , allora

  2. Ho disinstallato il modulo pywin32 . Per disinstallare eseguire il seguente comando nel prompt dei comandi.

    pip uninstall pywin32

  3. Quindi, ho reinstallato pywin32 . Per installarlo, apri il prompt dei comandi nella stessa directory in cui si trova il file della ruota pywin32. Quindi eseguire il seguente comando.

    pip install <Name of the wheel file with extension> Il file della ruota sarà come: piwin32-XXX-cpXX-none-win32.whl

Risolve il problema per me. Potresti anche provarlo. Spero che funzioni anche per te.


2

Ho copiato il cv2.pydfile dalla /opencv/build/python/2.7/x86cartella invece che dalla /x64cartella a C:/Python27/Lib/site-packeges. Ho seguito il resto delle istruzioni fornite qui .

Aggiunto da qualcun altro, non verificato: copio anche il file cv2.pydnella cartella C:/Python27/Lib/site-packages/cv2. Funziona.


1

Per me il problema era che stavo usando diverse versioni di Python nello stesso progetto Eclipse. La mia configurazione non era coerente con le proprietà del progetto e le versioni Python di configurazione di esecuzione .

In Progetto> Proprietà> PyDev , avevo l'interprete impostato su Python2.7.11.

Nel Run Configurations> Interpreter , stavo usando l'interprete predefinito. Cambiarlo in Python 2.7.11 ha risolto il problema.


1

Ho riscontrato lo stesso problema quando ho disinstallato e reinstallato una versione diversa di 2.7.x di Python sul mio sistema utilizzando un Windows Installer a 32 bit. Ho ricevuto lo stesso errore sulla maggior parte delle mie istruzioni di importazione. Ho disinstallato il Python appena installato e scaricato un programma di installazione di Windows a 64 bit e reinstallato di nuovo Python e ha funzionato. Spero che questo ti aiuti.


1

Quindi ho avuto problemi con l'installazione di vtk sotto Windows (dato che uso python 3.7 non è disponibile alcun binario fino ad ora solo per le versioni precedenti di python pip install vtk non funziona)

Ho scritto python nel mio cmd:

Python 3.7.3 on win32

Quindi ora so di avere Python 3.7.3 in esecuzione su 32 bit.

Ho quindi scaricato la ruota corretta su VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Successivamente ho installato quella ruota:

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

Poi l'ho testato e ha funzionato:

python
import vtk


0

Per prima cosa ho copiato cv2.pydda /opencv/build/python/2.7/x86a C:/Python27/Lib/site-packeges. L'errore è stato

"RuntimeError: modulo compilato con API versione 9 ma questa versione di numpy è 7"

Poi ho installato numpy-1.8.0-win32-superpack-python2.7.exee opencv funziona bene.

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


0
  1. Assicurati di aver installato python 2.7.12 o una versione precedente altrimenti riceverai sicuramente questo errore.
  2. Assicurati che il client Oracle sia installato a 64 bit se il sistema operativo è a 64 bit.
  3. Assicurati che Microsoft Visual C ++ Compiler per Python 2.7 sia 64 per bit per sistemi operativi a 64 bit o 32 bit per 32 bit. Nota: - SE il tuo sistema operativo è a 64 bit, installa tutti i pacchetti a 64 bit o se il sistema operativo è a 32 bit, installa il pacchetto a 32 bit.

0

Ha una soluzione molto semplice. Dopo l'installazione del opencv luogo

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

invece di, luogo cv2.pydda C:\opencv\build\python\2.7\ **x86**aC:\Python27\Lib\site-packages


0

Ho ricevuto questo errore durante il tentativo di importare MySQLdb.

Quello che ha funzionato per me è stato disinstallare Python e quindi reinstallarlo.

Ho ricevuto l'errore dopo aver installato npm ( https://www.npmjs.com/get-npm ). Una cosa che ha fatto è stata installare Python anche se lo avevo già.


0

Questo ha funzionato per me. Ho provato diversi metodi ma questa è stata la mia migliore soluzione.

Apri il prompt dei comandi e digita quanto segue; pip install opencv-python. (assicurati che Internet sia acceso). dopodiché prova a importarlo di nuovo.


0

Questo ha funzionato con me

pip install -- pywin32==227

1
Benvenuto in Stack Overflow. Perché ha funzionato per te? Per favore, potresti aggiungere maggiori dettagli a questa risposta?
Azametzin

-2

Ho trovato la soluzione, forse puoi provare a utilizzare la finestra cmd piuttosto che la finestra del prompt di anaconda per avviare il tuo primo test scrapy.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.