Ошибка импорта: сбой загрузки 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 и все заработало.

У меня такая же проблема. Вот что я сделал:

  1. Я скачал файл колеса pywin32 отсюда, затем

  2. Я удалил модуль pywin32. Для удаления выполните следующую команду в командной строке.

    pip uninstall pywin32

  3. Затем я переустановил 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, Я следовал остальным инструкциям, приведенным здесь.

This one worked with me

pip install -- pywin32==227

Обновите numpy.

pip install numpy --upgrade

Работай на меня!!

У меня возникла та же проблема при попытке написать код, касающийся 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,

  1. Пожалуйста, убедитесь, что вы установили Python 2.7.12 или ниже, в противном случае вы обязательно получите эту ошибку.
  2. Убедитесь, что клиент Oracle установлен в 64-битной среде, если ОС 64-битная.
  3. Убедитесь, что компилятор Microsoft Visual C++ для Python 2.7 является 64-разрядным для 64-разрядного ОС или 32-разрядным для 32-разрядного. Примечание:- Если ваша ОС является 64-битной, установите весь 64-битный пакет или, если Os 32-битный, установите 32-битный пакет.

Я нашел решение, может быть, вы можете попробовать использовать окно cmd, а не окно приглашения anaconda, чтобы запустить первый тест scrapy.

Другие вопросы по тегам