[Python] ImportError: Error de carga DLL:% 1 no es una aplicación Win32 válida. Pero las DLL están ahí


Answers

Por favor, compruebe si la versión de Python que está utilizando también es de 64 bits. Si no, ese podría ser el problema. Utilizaría una versión de Python de 32 bits y habría instalado un binario de 64 bits para la biblioteca OPENCV.

Question

Tengo una situación muy parecida a la de ImportError: Error al cargar DLL:% 1 no es una aplicación Win32 válida , pero la respuesta no me funciona.

Mi código de Python dice:

import cv2

Pero esa línea arroja el error que se muestra en el título de esta pregunta.

Tengo OpenCV instalado en C:\lib\opencv en esta máquina de 64 bits. Estoy usando Python de 64 bits.

Mi variable PYTHONPATH: PYTHONPATH=C:\lib\opencv\build\python\2.7 . Esta carpeta contiene cv2.pyd y eso es todo.

Mi variable PATH: Path=%OPENCV_DIR%\bin;... Esta carpeta contiene 39 archivos DLL como opencv_core246d.dll .

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

La solución en ImportError: DLL carga fallida:% 1 no es una aplicación Win32 válida dice agregar "la nueva ruta de binarios de opencv ( C:\opencv\build\bin\Release ) a la variable de entorno Windows PATH". Pero como se muestra arriba, ya tengo la carpeta de binarios de OpenCV ( C:\lib\opencv\build\x64\vc11\bin ) en mi RUTA. Y mi instalación de OpenCV no tiene ninguna carpeta de versiones (a excepción de una vacía en build / java).

¿Alguna idea de lo que está pasando mal? ¿Puedo decirle a Python que rastree el proceso de carga? Exactamente qué DLL está buscando?

Gracias, Lars

EDITAR:

Me acabo de dar cuenta de que, de acuerdo con http://www.dependencywalker.com/ , el cv2.pyd en C:\lib\opencv\build\python\2.7 es de 32 bits, mientras que la máquina y el Python que estoy ejecutando son de 64 bits. ¿Podría ser el problema? Y si es así, ¿dónde puedo encontrar una versión de 64 bits de cv2.pyd?




Para mí, el problema era que estaba usando diferentes versiones de Python en el mismo proyecto de Eclipse. Mi configuración no era coherente con las propiedades del proyecto y las versiones de ejecución de Python de configuración .

En Proyecto> Propiedades> PyDev , tuve el intérprete configurado en Python2.7.11.

En Configuraciones de ejecución> Intérprete , estaba usando el intérprete predeterminado. Cambiarlo a Python 2.7.11 solucionó el problema.




Puede instalar opencv desde sitios official o here .

Consulte this pregunta y this problema si está usando Anaconda .




Tiene una solución muy simple. Después de instalar el lugar de opencv

cv2.pyd desde C:\opencv\build\python\2.7\ **x64** a C:\Python27\Lib\site-packages

en lugar de, coloque cv2.pyd desde C:\opencv\build\python\2.7\ **x86** a C:\Python27\Lib\site-packages




En mi caso, tengo 64bit python, y fue lxml la versión incorrecta. Debería haber estado usando la versión x64 de eso también. Lo resolví descargando la versión de lxml de 64 bits aquí:

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

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

Esta fue la respuesta más simple a un problema frustrante.




Me enfrenté al mismo problema cuando desinstalé y reinstalé una versión diferente de 2.7.x de Python en mi sistema usando un Windows Installer de 32 bits. Tengo el mismo error en la mayoría de mis declaraciones de importación. Desinstalé el Python recién instalado y descargué un instalador de Windows de 64 bits y volví a instalar Python y funcionó. Espero que esto te ayude.




cv2.pyd archivo /opencv/build/python/2.7/x86 carpeta /opencv/build/python/2.7/x86 lugar de la carpeta /x64 a C:/Python27/Lib/site-packeges . Seguí el resto de las instrucciones proporcionadas here .