ImportError: Falha ao carregar DLL:% 1 não é um aplicativo Win32 válido. Mas as DLLs estão lá


112

Tenho uma situação muito parecida com a de ImportError: Falha no carregamento da DLL:% 1 não é um aplicativo Win32 válido , mas a resposta não está funcionando para mim.

Meu código Python diz:

import cv2

Mas essa linha lança o erro mostrado no título desta pergunta.

Tenho o OpenCV instalado C:\lib\opencvnesta máquina de 64 bits. Estou usando Python de 64 bits.

Meu variável PYTHONPATH: PYTHONPATH=C:\lib\opencv\build\python\2.7. Esta pasta contém cv2.pyde isso é tudo.

Minha variável PATH: Path=%OPENCV_DIR%\bin;...esta pasta contém 39 arquivos DLL, como opencv_core246d.dll.

OPENCV_DIR tem este valor: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

A solução em ImportError: Falha no carregamento da DLL:% 1 não é um aplicativo Win32 válido que diz para adicionar "o novo caminho dos binários opencv ( C:\opencv\build\bin\Release) à variável de ambiente PATH do Windows". Mas, como mostrado acima, já tenho a pasta de binários do OpenCV ( C:\lib\opencv\build\x64\vc11\bin) em meu PATH. E minha instalação do OpenCV não tem nenhuma pasta Release (exceto por uma vazia em build / java).

Alguma ideia do que está acontecendo de errado? Posso dizer ao Python para rastrear detalhadamente o processo de carregamento? Exatamente que DLL ele está procurando?

Obrigada lars

EDITAR:

Acabei de notar que, de acordo com http://www.dependencywalker.com/ , o cv2.pydin C:\lib\opencv\build\python\2.7é de 32 bits, enquanto a máquina e o Python que estou executando são de 64 bits. Será esse o problema? E em caso afirmativo, onde posso encontrar uma versão de 64 bits do cv2.pyd?


9
clique aqui e encontre o opencv de 64 bits
— Kill Console

1
@KillConsole: obrigado, vou tentar. Como o pacote de instalação que baixei tinha subpastas x86 e x64, presumi que incluía tudo que era necessário para 64 bits. Aparentemente não. Hooray, isso consertou! Agora estamos em "ImportError: numpy.core.multiarray falhou ao importar", então tentarei o mesmo site para numpy de 64 bits. Se você fizer seu comentário em uma resposta, irei votar a favor e aceitá-lo.
— LarsH

qual versão do Python você usou? (não em termos de versão de bits do processador)

1
@Begueradj: 2.7, se é isso que você está perguntando.
— LarsH

1
Eu tive o mesmo problema e nenhuma das soluções abaixo me ajudou, então descobri que meu PYTHONPATHcostumava conter as entradas que a instalação da biblioteca SimpleCV deixou lá. Apesar de já ter desinstalado o SimpleCV, PYTHONPATHele não foi restaurado e estava apontando para alguns diretórios com versões conflitantes do OpenCV deixadas pela instalação do SimpleCV. Solução: limpe o PYTHONPATH.
— Anton Daneyko

Respostas:



41

Verifique se a versão do python que você está usando também é de 64 bits. Se não, esse poderia ser o problema. Você estaria usando uma versão python de 32 bits e instalaria binários de 64 bits para a biblioteca OPENCV.


Conforme mencionado na pergunta, eu estava usando Python de 64 bits.
— LarsH de

17

Uau, encontrei mais um caso para esse problema. Nenhuma das opções acima funcionou. Eventualmente, usei a capacidade do python para introspectar o que estava sendo carregado. Para python 2.7, isso significa:

import imp
imp.find_module("cv2")

Isso resultou em um arquivo "cv2.pyd" completamente inesperado em um diretório DLL do Anaconda que não foi tocado por múltiplas tentativas de desinstalação / instalação. Python estava procurando lá primeiro e não encontrando minha boa instalação. Excluí aquele arquivo cv2.pyd e tentei imp.find_module ("cv2") novamente e o python imediatamente encontrou o arquivo certo e o cv2 começou a funcionar.

Portanto, se nenhuma das outras soluções funcionar para você, certifique-se de usar a introspecção python para ver qual arquivo o python está tentando carregar.


4
Eu tive um problema onde ele estava tentando executar uma versão do arquivo em uma pasta completamente diferente. Essa solução aqui me ajudou a descobrir o que realmente estava acontecendo. Obrigado!
— Emad Y

3
Esta é uma excelente resposta, obrigado! Tive um problema com o PyDev em que ele carregava "ctypes" de uma instalação incompatível do python e percebi que precisava configurar meu interpretador para usar o WinPython, que corrigiu o problema.
— eacousineau de

7

No meu caso, tenho python de 64 bits e lxml é a versão errada - eu deveria estar usando a versão x64 disso também. Resolvi isso baixando a versão de 64 bits do lxml aqui:

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

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

Essa foi a resposta mais simples para um problema frustrante.


6

Acabei de ter esse problema, acontece que era só porque eu estava usando a versão x64 do arquivo opencv. Tentei o x86 e funcionou.


2

Se o seu sistema de compilação (CMake no meu caso) copiar o arquivo de <name>.dllpara <name>.pyd, você obterá esse erro se o arquivo original não for realmente uma dll. No meu caso, a construção de bibliotecas compartilhadas foi desativada, então o arquivo subjacente era na verdade um*.lib .

Eu descobri esse erro carregando o pydarquivo no DependencyWalker e descobrindo que ele não era válido.


2

Eu tive o mesmo problema. Aqui está o que eu fiz:

  1. Eu baixei o arquivo pywin32 Wheel daqui , então

  2. Desinstalei o módulo pywin32 . Para desinstalar, execute o seguinte comando no Prompt de Comando.

    pip uninstall pywin32

  3. Então, eu reinstalei o pywin32 . Para instalá-lo, abra o Prompt de Comando no mesmo diretório onde se encontra o arquivo pywin32 wheel. Em seguida, execute o seguinte comando.

    pip install <Name of the wheel file with extension> O arquivo da roda será como: piwin32-XXX-cpXX-none-win32.whl

Isso resolve o problema para mim. Você também pode tentar. Espero que funcione para você também.


2

Copiei o cv2.pydarquivo da /opencv/build/python/2.7/x86pasta em vez de da /x64pasta para C:/Python27/Lib/site-packeges. Eu segui o resto das instruções fornecidas aqui .

Adicionado por outra pessoa, não verificado: Eu também copio o arquivo cv2.pydpara a pasta C:/Python27/Lib/site-packages/cv2. Funciona.


1

Para mim, o problema era que eu estava usando versões diferentes do Python no mesmo projeto Eclipse. Minha configuração não era consistente com as versões do Python Propriedades do projeto e Executar configuração .

Em Projeto> Propriedades> PyDev , tive o Interpreter definido como Python2.7.11.

Em Run Configurations> Interpreter , estava usando o Default Interpreter. Mudá-lo para Python 2.7.11 corrigiu o problema.


1

Eu enfrentei o mesmo problema quando desinstalei e reinstalei uma versão diferente do 2.7.x do Python em meu sistema usando um Windows Installer de 32 bits. Recebi o mesmo erro na maioria das minhas instruções de importação. Desinstalei o Python recém-instalado e baixei um instalador do Windows de 64 bits e reinstalei o Python novamente e funcionou. Espero que isso ajude você.


1

Então, eu tive problemas ao instalar o vtk no windows (como eu uso o python 3.7, não há binário disponível até agora apenas para versões mais antigas do python pip install vtk não está funcionando)

Eu escrevi python no meu cmd:

Python 3.7.3 on win32

Então agora eu sei que tenho o python 3.7.3 rodando em 32 bits.

Em seguida, baixei a roda correta em VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Em seguida, instalei essa roda:

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

Então eu testei e funcionou:

python
import vtk


0

Primeiro, copiei cv2.pydde /opencv/build/python/2.7/x86para C:/Python27/Lib/site-packeges. O erro foi

"RuntimeError: módulo compilado com a API versão 9, mas esta versão do numpy é 7"

Então eu instalei numpy-1.8.0-win32-superpack-python2.7.exee opencv funciona bem.

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


0
  1. Certifique-se de que instalou o python 2.7.12 ou versão inferior, caso contrário, você obterá definitivamente este erro.
  2. Certifique-se de que o cliente Oracle esteja instalado de 64 bits se o sistema operacional for de 64 bits.
  3. Certifique-se de que o Microsoft Visual C ++ Compiler para Python 2.7 seja 64 para bits para sistemas operacionais de 64 bits ou 32 bits para 32 bits. Nota: - Se o seu sistema operacional for de 64 bits, instale todos os pacotes de 64 bits ou se o sistema operacional for de 32 bits, instale o pacote de 32 bits.

0

Tem uma solução muito simples. Depois de instalar o opencv local

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

em vez de, lugar cv2.pydde C:\opencv\build\python\2.7\ **x86**paraC:\Python27\Lib\site-packages


0

Recebi este erro ao tentar importar MySQLdb.

O que funcionou para mim foi desinstalar o Python e reinstalá-lo.

Recebi o erro após instalar o npm ( https://www.npmjs.com/get-npm ). Uma coisa que ele fez foi instalar o Python, embora eu já o tivesse.


0

Isso tem funcionado para mim. Tentei vários métodos, mas esta foi a minha melhor solução.

Abra o prompt de comando e digite o seguinte; pip install opencv-python. (certifique-se de que sua internet esteja ligada). depois disso, tente importá-lo novamente.



-2

Eu encontrei a solução, talvez você possa tentar usar a janela cmd em vez da janela de prompt do anaconda para iniciar seu primeiro teste de scrapy.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.