Ошибка импорта: сбой загрузки DLL: %1 не является допустимым приложением Win32. Но библиотеки DLL есть
У меня очень похожая ситуация на 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
в моем ПУТИ. А в моей установке OpenCV нет папок Release (кроме пустой под build/java).
Любые идеи относительно того, что идет не так? Могу ли я сказать Python подробно отслеживать процесс загрузки? Что именно DLL ищет?
Спасибо ларс
РЕДАКТИРОВАТЬ:
Я просто заметил, что, согласно http://www.dependencywalker.com/, cv2.pyd
в C:\lib\opencv\build\python\2.7
32-битный, тогда как машина и Python, на котором я работаю, 64-битные. Может ли это быть проблема? И если да, где я могу найти 64-битную версию cv2.pyd?
24 ответа
Неофициальные двоичные файлы Windows для пакетов расширения Python
Здесь вы можете найти любые библиотеки Python
Пожалуйста, проверьте, что версия 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 Introspection, чтобы увидеть, какой файл Python пытается загрузить.
В моем случае у меня был 64-битный Python, и это была LXML, который был неправильной версией - я должен был использовать версию для 64-разрядных также. Я решил это, загрузив 64-битную версию lxml здесь:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
Это был самый простой ответ на неприятную проблему.
У меня просто была эта проблема, оказывается, это потому, что я использовал версию opencv для x64. Попробовал х86 и все заработало.
У меня такая же проблема. Вот что я сделал:
Я скачал файл колеса pywin32 отсюда, затем
Я удалил модуль pywin32. Для удаления выполните следующую команду в командной строке.
pip uninstall pywin32
Затем я переустановил pywin32. Чтобы установить его, откройте командную строку в том же каталоге, где находится файл колеса pywin32. Затем выполните следующую команду.
pip install <Name of the wheel file with extension>
Файл колеса будет выглядеть так: piwin32-XXX-cpXX-none-win32.whl
Это решает проблему для меня. Вы также можете попробовать. Надеюсь, это сработает и для вас.
Для меня проблема заключалась в том, что я использовал разные версии Python в одном проекте Eclipse. Моя установка не соответствовала свойствам проекта и версиям Python для настройки конфигурации.
В Project> Properties> PyDev я установил интерпретатор в Python2.7.11.
В Конфигурации запуска> Интерпретатор я использовал Интерпретатор по умолчанию. Изменение его на Python 2.7.11 решило проблему.
Если ваша сборочная система (в моем случае CMake) копирует файл из <name>.dll
в <name>.pyd
, вы получите эту ошибку, если исходный файл не был на самом деле DLL. В моем случае сборка разделяемых библиотек была отключена, поэтому основной файл был *.lib
,
Я обнаружил эту ошибку, загрузив pyd
файл в DependencyWalker и обнаружение, что это не действительно.
Я скопировал cv2.pyd
файл из /opencv/build/python/2.7/x86
папка вместо /x64
папка для C:/Python27/Lib/site-packeges
, Я следовал остальным инструкциям, приведенным здесь.
У меня возникла та же проблема при попытке написать код, касающийся Speech_to_Text.
Решение было очень простым. Удалите предыдущий pywin32 с помощью метода pip
pip uninstall pywin32
Вышеупомянутое удалит существующий, который по умолчанию для 32-битных компьютеров. И снова установите его, используя
pip install pywin32
Это установит тот для 64-битного компьютера, который вы используете.
Я столкнулся с той же проблемой, когда я удалил и переустановил другую версию 2.7.x Python в моей системе с помощью 32-разрядного установщика Windows. Я получил ту же ошибку в большинстве моих операторов импорта. Я удалил только что установленный Python, скачал 64-битный установщик Windows и снова переустановил Python, и он заработал. Надеюсь, это поможет вам.
Итак, у меня возникли проблемы с установкой vtk под Windows (поскольку я использую python 3.7, пока нет доступных двоичных файлов, только для более старых версий python pip install vtk не работает)
Я написал python в своем cmd:
Python 3.7.3 on win32
Итак, теперь я знаю, что у меня есть python 3.7.3, работающий на 32-разрядной версии.
Затем я загрузил нужное колесо с VTK‑8.2.0‑cp37‑cp37m‑win32.whl
Затем я установил это колесо:
pip install VTK-8.2.0-cp37-cp37m-win32.whl
Потом протестировал, и все заработало:
python
import vtk
У меня была аналогичная проблема при попытке запустить uvicorn.
Создание новой виртуальной среды и переустановка пакетов python сработали.
У него очень простое решение. После установки opencv
место
cv2.pyd
от C:\opencv\build\python\2.7\ **x64**
в C:\Python27\Lib\site-packages
вместо места cv2.pyd
от C:\opencv\build\python\2.7\ **x86**
в C:\Python27\Lib\site-packages
Это сработало для меня. Я пробовал разные методы, но это было моим лучшим решением.
Откройте командную строку и введите следующее:pip install opencv-python
.
(убедитесь, что ваш интернет включен). после этого попробуйте импортировать его снова.
Также может быть, что ваш
anaconda
версия
32 bit
когда это должно быть
64 bit
.
Я получил эту ошибку при попытке импортировать MySQLdb.
Для меня сработало удаление Python, а затем его повторная установка.
Я получил ошибку после установки npm ( https://www.npmjs.com/get-npm). Единственное, что он сделал, - это установил 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
Если вы используете pycharm, я захожу в настройки -> интерпретация python, нажимаю кнопку + и ищу имя в списке пакетов python. Изображение, показывающее, куда идти, когда вы хотите что-то установить
Вы можете установить opencv
с официальных или неофициальных сайтов.
Обратитесь к этому вопросу и этой проблеме, если вы используете Anaconda
,
- Пожалуйста, убедитесь, что вы установили Python 2.7.12 или ниже, в противном случае вы обязательно получите эту ошибку.
- Убедитесь, что клиент Oracle установлен в 64-битной среде, если ОС 64-битная.
- Убедитесь, что компилятор Microsoft Visual C++ для Python 2.7 является 64-разрядным для 64-разрядного ОС или 32-разрядным для 32-разрядного. Примечание:- Если ваша ОС является 64-битной, установите весь 64-битный пакет или, если Os 32-битный, установите 32-битный пакет.
Я нашел решение, может быть, вы можете попробовать использовать окно cmd, а не окно приглашения anaconda, чтобы запустить первый тест scrapy.