Ответ 1
Неофициальные бинарные файлы Windows для пакетов расширения Python
здесь вы можете найти любые python libs
У меня ситуация очень похожа на ситуацию в ImportError: загрузка DLL не удалась:% 1 не является допустимым приложением Win32, но ответ там не работает для меня.
Мой код Python говорит:
import cv2
Но эта строка выдает ошибку, указанную в заголовке этого вопроса.
У меня установлен OpenCV в C:\lib\opencv
на этой 64-разрядной машине. Я использую 64-битный Python.
Моя переменная PYTHONPATH: PYTHONPATH=C:\lib\opencv\build\python\2.7
. Эта папка содержит cv2.pyd
и все.
Моя переменная PATH: Path=%OPENCV_DIR%\bin;...
Эта папка содержит 39 DLL файлов, таких как opencv_core246d.dll
.
OPENCV_DIR имеет следующее значение: OPENCV_DIR=C:\lib\opencv\build\x64\vc11
.
Решение в ImportError: загрузка DLL не удалась:% 1 не является допустимым приложением Win32 говорит, чтобы добавить "новый путь двоичных файлов opencv (C:\opencv\build\bin\Release
) к Переменная среды Windows PATH". Но, как показано выше, у меня уже есть папка с двоичными файлами OpenCV (C:\lib\opencv\build\x64\vc11\bin
) в моем PATH. И моя установка OpenCV не имеет каких-либо папок Release (кроме пустого в build/java).
Любые идеи относительно того, что происходит не так? Могу ли я сказать Python для подробного отслеживания процесса загрузки? То, что ищет DLL?
Спасибо, Lars
Я только заметил, что согласно http://www.dependencywalker.com/, cv2.pyd
в C:\lib\opencv\build\python\2.7
- 32-разрядный, тогда как машина и Python, который я запускаю, является 64-битным. Может ли это быть проблема? И если да, где я могу найти 64-битную версию cv2.pyd?
Неофициальные бинарные файлы Windows для пакетов расширения Python
здесь вы можете найти любые python libs
Пожалуйста, проверьте, является ли используемая версия python 64-разрядной. Если нет, это может быть проблемой. Вы использовали бы 32-битную версию python и установили 64-битные двоичные файлы для библиотеки OPENCV.
Вау, я нашел еще один случай для этой проблемы. Ничего из этого не произошло. В конце концов я использовал способность python для того, чтобы заглянуть в то, что было загружено. Для python 2.7 это означает:
import imp
imp.find_module("cv2")
Это оказалось совершенно неожиданным "cv2.pyd" файлом в каталоге DLL Anaconda, который не был затронут несколькими попытками удаления/установки. Сначала Python смотрел туда и не нашел моей хорошей установки. Я удалил этот файл cv2.pyd и снова попробовал imp.find_module ( "cv2" ), и python сразу же нашел нужный файл, а cv2 начал работать.
Итак, если ни одно из других решений не работает для вас, убедитесь, что вы используете интроспекцию python, чтобы узнать, что пытается загрузить файл python.
В моем случае у меня 64-битный python, и это был неправильный вариант lxml - я тоже должен был использовать версию x64. Я решил это, загрузив здесь 64-разрядную версию lxml:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
Это был самый простой ответ на неприятную проблему.
У меня просто была эта проблема, она поворачивается, потому что я использовал x64-версию файла opencv. Пробовал x86, и он работал.
Я скопировал cv2.pyd
файл из папки /opencv/build/python/2.7/x86
вместо папки /x64
в C:/Python27/Lib/site-packeges
. Я следил за инструкциями здесь.
Для меня проблема заключалась в том, что я использовал разные версии Python в одном проекте Eclipse. Моя настройка не соответствовала параметрам Project Properties и Run Configuration Python.
В Project > Properties > PyDev у меня установлен Interpreter на Python2.7.11.
В Run Configurations > Interpreter я использовал интерпретатор по умолчанию. Изменение его на Python 2.7.11 устранило проблему.
Если ваша системная система (CMake в моем случае) копирует файл с <name>.dll
до <name>.pyd
, вы получите эту ошибку, если исходный файл не был фактически dll. В моем случае создание разделяемых библиотек было отключено, поэтому основной файл был фактически *.lib
.
Я обнаружил эту ошибку, загрузив файл pyd
в DependencyWalker и обнаружив, что он недействителен.
У меня была та же проблема. Вот что я сделал:
Я загрузил файл колеса pywin32 из здесь, затем
Я удалил модуль pywin32. Для удаления выполните следующую команду в командной строке.
pip uninstall pywin32
Затем я переустановил pywin32. Чтобы установить его, откройте командную строку в том же каталоге, где находится файл колеса pywin32. Затем выполните следующую команду.
pip install <Name of the wheel file with extension>
Файл колеса будет выглядеть следующим образом: piwin32-XXX-cpXX-none-win32.whl
Он разрешает проблему для меня. Вы также можете попробовать. Надеюсь, что это сработает и для вас.
У меня возникла такая же проблема, когда я удалил и переустановил другую версию 2.7.x Python в своей системе с помощью 32-разрядного установщика Windows. Я получил ту же ошибку в большинстве моих операторов импорта. Я удалил недавно установленный Python и загрузил 64-разрядный установщик Windows и снова установил Python, и он сработал. Надеюсь, это поможет вам.
Сначала я скопировал cv2.pyd
от /opencv/build/python/2.7/x86
до C:/Python27/Lib/site-packeges
. Ошибка была
"RuntimeError: модуль скомпилирован против API версии 9, но эта версия numpy равна 7"
Затем я установил numpy-1.8.0-win32-superpack-python2.7.exe
, а opencv отлично работает.
>>> import cv2
>>> print cv2.__version__
2.4.13
Вы можете установить opencv
из официальный или неофициальный.
Обратитесь к этому вопросу и этот вопрос, если вы используете Anaconda
.
Я нашел решение, возможно, вы можете попытаться использовать окно cmd, а не окно подсказки anaconda, чтобы начать первый скрининг-тест.