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.