ImportError: Не вдалося завантажити DLL:% 1 не є дійсною програмою Win32. Але DLL є


112

У мене ситуація дуже схожа на ситуацію в ImportError: не вдалося завантажити DLL:% 1 не є дійсною програмою Win32 , але відповідь там не працює для мене.

Мій код Python говорить:

import cv2

Але цей рядок видає помилку, показану в заголовку цього питання.

У мене C:\lib\opencvна цьому 64-бітному верстаті встановлений OpenCV . Я використовую 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 шукає?

Спасибі, Ларс

Редагувати:

Щойно я помітив, що, згідно з http://www.dependencywalker.com/ , cv2.pydвхід C:\lib\opencv\build\python\2.7є 32-розрядним, тоді як машина та Python, якими я керую, є 64-розрядні. Чи може це бути проблемою? І якщо так, то де я можу знайти 64-бітну версію cv2.pyd?


9
натисніть тут і знайдіть 64-розрядний opencv
Kill Console

1
@KillConsole: спасибі, я спробую. Оскільки в завантаженому нами пакеті встановлені як x86, так і x64 вкладені папки, я припустив, що він включає все, що було для 64-розрядних. Мабуть, ні. Ура, що це виправило! Тепер ми переходимо до "ImportError: numpy.core.multiarray не вдалося імпортувати", тому я спробую той самий сайт для 64-розрядних numpy. Якщо ви зробите свій коментар у відповідь, я його схвалюю і приймаю.
LarsH

яку версію Python ви використовували? (не з точки зору

1
@Begueradj: 2.7, якщо це те, що ви запитуєте.
LarsH

1
У мене була така ж проблема, і жодне з наведених нижче рішень мені не допомогло, тому виявилося, що мій PYTHONPATHвміст містив записи, які інсталювала бібліотека SimpleCV. Незважаючи на те, що я вже видалив SimpleCV, файл PYTHONPATHне було відновлено і вказував на деякі каталоги з суперечливими версіями OpenCV, залишеними установкою SimpleCV. Рішення: очистити PYTHONPATH.
Антон Данейко

Відповіді:


81

Неофіційні бінарні файли Windows для розширень пакетів Python

ви можете знайти будь-які пітонові в'язки звідси


це справді допомогло. Я не впевнений, що було не так. У мене була версія opencv, anaconda3, python3. Встановлено opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64 з вищевказаного списку пакунків і зміг імпортувати cv2 після години боротьби. Дякую тонну.
смарагдовий

41

Перевірте, чи використовується версія python, також 64-бітна. Якщо ні, то це може бути проблемою. Ви б використовували 32-бітну версію python і встановили б 64-бітні бінарні файли для бібліотеки OPENCV.


Як згадувалося в запитанні, я використовував 64-розрядний Python.
LarsH

17

Нічого собі, я знайшов ще один випадок цієї проблеми. Ніщо з вищезазначеного не працювало. Врешті-решт я використав здатність 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 намагається завантажити.


4
У мене виникла проблема, чи намагалася повністю запустити версію файлу в іншій папці. Це рішення допомогло мені зрозуміти, що насправді відбувається. Дякую!
Емад Я

3
Це відмінна відповідь, дякую! Я зіткнувся з проблемою з PyDev, де він завантажував "ctypes" з несумісної установки python, і я зрозумів, що мені потрібно налаштувати інтерпретатора для використання WinPython, який це виправив.
eacousineau

7

У моєму випадку у мене 64-бітовий пітон, і це неправильна версія lxml - я також повинен був використовувати версію x64. Я вирішив це, завантаживши сюди 64-бітну версію lxml:

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

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

Це була найпростіша відповідь на розчарування.


6

У мене просто була ця проблема, виявляється, це було тільки тому, що я використовував x64 версію файлу opencv. Спробував x86, і він спрацював.


2

Якщо збірки в системі (CMake в моєму випадку) копіює файл з <name>.dllдо <name>.pyd, ви отримаєте цю помилку , якщо вихідний файл не був на насправді длл. У моєму випадку створення загальнодоступних бібліотек було вимкнено, тому базовий файл був фактично a *.lib.

Я виявив цю помилку, завантаживши pydфайл у DependencyWalker і виявив, що він недійсний.


2

У мене була така ж проблема. Ось що я зробив:

  1. Я скачав pywin32 Wheel файл з тут , то

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

    pip uninstall pywin32

  3. Потім я перевстановив pywin32 . Щоб встановити його, відкрийте командний рядок у тому самому каталозі, де лежить файл колеса pywin32. Потім виконайте таку команду.

    pip install <Name of the wheel file with extension> Файл колеса буде таким: piwin32-XXX-cpXX-none-win32.whl

Це вирішує проблему для мене. Ви також можете спробувати спробувати. Сподіваюсь, що це працює і для вас.


2

Я скопіював cv2.pydфайл із /opencv/build/python/2.7/x86папки замість /x64папки в C:/Python27/Lib/site-packeges. Я дотримувався решти інструкцій, наданих тут .

Доданий ще хтось, не перевірений: я також копіюю файл cv2.pydу папку C:/Python27/Lib/site-packages/cv2. Це працює.


1

Для мене проблема полягала в тому, що я використовував різні версії Python в одному проекті Eclipse. Моя настройка не відповідала властивостям проекту та конфігурації запуску версіями Python.

У проекті> Властивості> PyDev мене був інтерпретатор встановлений на Python2.7.11.

У програмі Запуск конфігурацій> Інтерпретатор я використовував Інтерпретатор за замовчуванням. Змінивши його на Python 2.7.11, виправили проблему.


1

Я зіткнувся з тією ж проблемою, коли я видалив та перевстановив іншу версію 2.7.x Python у своїй системі за допомогою 32-бітного Windows Installer. Я отримав таку ж помилку в більшості своїх заяв про імпорт. Я видалив нещодавно встановлений Python і завантажив 64-бітний інсталятор Windows і знову встановив Python, і він працював. Сподіваюся, це вам допоможе.


1

Тож у мене виникли проблеми з установкою vtk під Windows (оскільки я використовую python 3.7, поки немає доступних бінарних файлів лише для старих версій python, встановлення pip vtk не працює)

Я написав python у своєму cmd:

Python 3.7.3 on win32

Тож тепер я знаю, що в мене працює 32-пітневий python 3.7.3.

Потім я завантажив правильне колесо на VTK-8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Далі я вставив це колесо:

pip install VTK-8.2.0-cp37-cp37m-win32.whl

Потім я протестував це, і він спрацював:

python
import vtk


0

Спочатку я скопіював 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


0
  1. Переконайтеся, що ви встановили python 2.7.12 або нижче версії, інакше ви отримаєте цю помилку точно.
  2. Переконайтесь, що клієнт Oracle встановлено 64 біт, якщо ОС 64 біт.
  3. Переконайтесь, що компілятор Microsoft Visual C ++ для Python 2.7 є 64 для біт для 64-бітного ОС або 32-розрядного для 32-бітного. Примітка: - Якщо ур ОС 64-бітний, встановіть увесь пакет 64-бітового або якщо ОС - 32-бітний, встановіть 32-бітний пакет.

0

Він має дуже просте рішення. Після установки 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


0

Я отримав цю помилку при спробі імпорту MySQLdb.

Що для мене працювало - це видалити Python, а потім перевстановити його.

Я отримав помилку після встановлення npm ( https://www.npmjs.com/get-npm ). Одне з них було встановити Python, хоча я вже мав його.


0

Це працювало на мене. Я пробував різні методи, але це було моїм найкращим рішенням.

Відкрийте командний рядок і введіть наступне; pip install opencv-python. (переконайтеся, що ваш Інтернет увімкнено). після цього спробуйте імпортувати його ще раз.



-2

Я знайшов рішення, можливо, ви можете спробувати скористатися вікном cmd, а не вікном підказки анаконда, щоб почати перший тест на скрапію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.