ImportError: Ładowanie biblioteki DLL nie powiodło się:% 1 nie jest poprawną aplikacją Win32. Ale biblioteki DLL tam są


112

Mam sytuację bardzo podobną do tej z ImportError: ładowanie DLL nie powiodło się:% 1 nie jest poprawną aplikacją Win32 , ale odpowiedź tam nie działa.

Mój kod w Pythonie mówi:

import cv2

Ale w tym wierszu pojawia się błąd pokazany w tytule tego pytania.

Mam zainstalowany OpenCV C:\lib\opencvna tej 64-bitowej maszynie. Używam 64-bitowego Pythona.

Moja PYTHONPATH zmienna: PYTHONPATH=C:\lib\opencv\build\python\2.7. Ten folder zawiera cv2.pydi to wszystko.

Zmienna My PATH: Path=%OPENCV_DIR%\bin;...ten folder zawiera 39 plików DLL, takich jak opencv_core246d.dll.

OPENCV_DIR ma następującą wartość: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

Rozwiązanie w ImportError: Ładowanie biblioteki DLL nie powiodło się:% 1 nie jest prawidłową aplikacją Win32, która nakazuje dodanie „nowej ścieżki plików binarnych opencv ( C:\opencv\build\bin\Release) do zmiennej środowiskowej PATH systemu Windows”. Ale jak pokazano powyżej, mam już folder plików binarnych OpenCV ( C:\lib\opencv\build\x64\vc11\bin) w mojej PATH. A moja instalacja OpenCV nie ma żadnych folderów Release (z wyjątkiem pustego w build / java).

Jakieś pomysły, co się dzieje? Czy mogę powiedzieć Pythonowi, aby szczegółowo prześledził proces ładowania? Dokładnie jakiej biblioteki DLL szuka?

Dzięki, Lars

EDYTOWAĆ:

Właśnie zauważyłem, że zgodnie z http://www.dependencywalker.com/ The cv2.pydw C:\lib\opencv\build\python\2.7to 32-bitowy, podczas gdy maszyna i Python biegnę są 64-bitowe. Czy to może być problem? A jeśli tak, gdzie mogę znaleźć 64-bitową wersję pliku cv2.pyd?


9
kliknij tutaj i znajdź 64-bitowy opencv
Kill Console

1
@KillConsole: dzięki, spróbuję. Ponieważ pobrany pakiet instalacyjny miał podfoldery x86 i x64, założyłem, że zawiera wszystko, co było potrzebne dla wersji 64-bitowej. Najwyraźniej nie. Brawo, to naprawiło! Teraz jesteśmy na "ImportError: numpy.core.multiarray nie udało się zaimportować", więc spróbuję tej samej strony dla 64-bitowego numpy. Jeśli zmienisz swój komentarz w odpowiedź, zagłosuję za i zaakceptuję go.
LarsH

której wersji Pythona używasz? (nie pod względem wersji bitów procesora)

1
@Begueradj: 2.7, jeśli o to pytasz.
LarsH

1
Miałem ten sam problem i żadne z poniższych rozwiązań nie pomogło, więc okazało się, że PYTHONPATHkiedyś zawierałem wpisy, które zostawiła tam instalacja biblioteki SimpleCV. Mimo że odinstalowałem już SimpleCV, plik PYTHONPATHnie został przywrócony i wskazywał na niektóre katalogi z sprzecznymi wersjami OpenCV pozostawionymi przez instalację SimpleCV. Rozwiązanie: wyczyść plik PYTHONPATH.
Anton Daneyko

Odpowiedzi:



42

Sprawdź, czy używana wersja języka Python jest również 64-bitowa. Jeśli nie, to może być problem. Używałbyś 32-bitowej wersji Pythona i zainstalowałbyś 64-bitowe pliki binarne dla biblioteki OPENCV.


Jak wspomniano w pytaniu, korzystałem z 64-bitowego Pythona.
LarsH,

18

Wow, znalazłem kolejny przypadek tego problemu. Żadne z powyższych nie działało. W końcu wykorzystałem zdolność Pythona do introspekcji, co było ładowane. Dla Pythona 2.7 oznacza to:

import imp
imp.find_module("cv2")

Okazało się, że w katalogu DLL Anaconda pojawił się zupełnie nieoczekiwany plik „cv2.pyd”, który nie został dotknięty przez wiele prób odinstalowania / instalacji. Python szukał tam najpierw i nie znalazł mojej dobrej instalacji. Usunąłem ten plik cv2.pyd i ponownie spróbowałem imp.find_module ("cv2"), a Python natychmiast znalazł właściwy plik i cv2 zaczął działać.

Więc jeśli żadne z innych rozwiązań nie działa dla Ciebie, upewnij się, że używasz introspekcji Pythona, aby zobaczyć, jaki plik python próbuje załadować.


4
Miałem problem polegający na tym, że próbowała całkowicie uruchomić wersję pliku w innym folderze. To rozwiązanie pomogło mi dowiedzieć się, co się naprawdę dzieje. Dzięki!
Emad Y,

3
To doskonała odpowiedź, dzięki! Napotkałem problem z PyDev, który powodował ładowanie „ctypów” z niekompatybilnej instalacji Pythona i zdałem sobie sprawę, że muszę skonfigurować interpreter do używania WinPython, co go naprawiło.
eacousineau

7

W moim przypadku mam 64-bitowego Pythona i to lxml był złą wersją - powinienem był również użyć wersji x64. Rozwiązałem ten problem, pobierając 64-bitową wersję lxml tutaj:

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

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

To była najprostsza odpowiedź na frustrujący problem.


6

Właśnie miałem ten problem, okazuje się, że to tylko dlatego, że używałem wersji x64 pliku opencv. Wypróbowałem x86 i zadziałało.


2

Jeśli Twój system kompilacji (w moim przypadku CMake) kopiuje plik z <name>.dlldo <name>.pyd, pojawi się ten błąd, jeśli oryginalny plik nie był w rzeczywistości biblioteką dll. W moim przypadku budowanie bibliotek współdzielonych zostało wyłączone, więc plik źródłowy był w rzeczywistości plikiem*.lib .

Odkryłem ten błąd, ładując pydplik w DependencyWalker i stwierdzając, że nie był prawidłowy.


2

Miałem ten sam problem. Oto co zrobiłem:

  1. Pobrałem pywin32 plik koło z tutaj , a następnie

  2. Odinstalowałem moduł pywin32 . Aby odinstalować, wykonaj następujące polecenie w wierszu polecenia.

    pip uninstall pywin32

  3. Następnie ponownie zainstalowałem pywin32 . Aby go zainstalować, otwórz wiersz polecenia w tym samym katalogu, w którym znajduje się plik koła pywin32. Następnie wykonaj następujące polecenie.

    pip install <Name of the wheel file with extension> Plik koła będzie wyglądał następująco: piwin32-XXX-cpXX-none-win32.whl

Rozwiązuje problem za mnie. Możesz także spróbować. Mam nadzieję, że to zadziała również dla Ciebie.


2

Skopiowałem cv2.pydplik z /opencv/build/python/2.7/x86folderu zamiast z /x64folderu do C:/Python27/Lib/site-packeges. Wykonałem pozostałe instrukcje podane tutaj .

Dodane przez kogoś innego, niezweryfikowane: kopiuję również plik cv2.pyddo folderu C:/Python27/Lib/site-packages/cv2. To działa.


1

Dla mnie problem polegał na tym, że używałem różnych wersji Pythona w tym samym projekcie Eclipse. Moja konfiguracja nie była spójna z wersjami Project Properties i Run Configuration Python.

W Projekt> Właściwości> PyDev ustawiłem Interpreter na Python2.7.11.

W Run Configurations> Interpreter użyłem domyślnego interpretera. Zmiana na Pythona 2.7.11 rozwiązała problem.


1

Napotkałem ten sam problem, gdy odinstalowałem i ponownie zainstalowałem inną wersję Pythona 2.7.x w moim systemie przy użyciu 32-bitowego Instalatora Windows. Ten sam błąd występuje w większości moich instrukcji importu. Odinstalowałem nowo zainstalowany Python, pobrałem 64-bitowy instalator Windows i ponownie zainstalowałem Pythona i zadziałało. Mam nadzieję, że to ci pomoże.


1

Miałem więc problemy z instalacją vtk pod oknami (ponieważ używam Pythona 3.7, do tej pory nie ma dostępnych plików binarnych tylko dla starszych wersji Pythona pip install vtk nie działa)

Napisałem pythona w moim cmd:

Python 3.7.3 on win32

Więc teraz wiem, że mam Pythona 3.7.3 działającego na 32-bitowym.

Następnie pobrałem odpowiednie koło na VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Następnie zainstalowałem to koło:

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

Potem to przetestowałem i zadziałało:

python
import vtk


0

Najpierw skopiowałem cv2.pydz /opencv/build/python/2.7/x86do C:/Python27/Lib/site-packeges. Błąd był

„RuntimeError: moduł skompilowany dla wersji API 9, ale ta wersja numpy to 7”

Następnie zainstalowałem numpy-1.8.0-win32-superpack-python2.7.exei opencv działa dobrze.

>>> import cv2
>>> print cv2.__version__
2.4.13


0
  1. Upewnij się, że masz zainstalowaną wersję Pythona 2.7.12 lub starszą, w przeciwnym razie na pewno otrzymasz ten błąd.
  2. Upewnij się, że klient Oracle jest zainstalowany w wersji 64-bitowej, jeśli system operacyjny jest 64-bitowy.
  3. Upewnij się, że kompilator Microsoft Visual C ++ dla Pythona 2.7 jest 64-bitowy dla 64-bitowego systemu operacyjnego lub 32-bitowy dla 32-bitowego. Uwaga: - JEŚLI Twój system operacyjny jest 64-bitowy, zainstaluj wszystkie pakiety 64-bitowe lub jeśli system operacyjny jest 32-bitowy, zainstaluj pakiet 32-bitowy.

0

Ma bardzo proste rozwiązanie. Po zainstalowaniu opencv miejsce

cv2.pydod C:\opencv\build\python\2.7\ **x64**doC:\Python27\Lib\site-packages

zamiast, umieść cv2.pydod C:\opencv\build\python\2.7\ **x86**doC:\Python27\Lib\site-packages


0

Otrzymałem ten błąd podczas próby zaimportowania MySQLdb.

Udało mi się odinstalować Pythona, a następnie zainstalować go ponownie.

Otrzymałem błąd po zainstalowaniu npm ( https://www.npmjs.com/get-npm ). Jedną z rzeczy, które zrobił, było zainstalowanie Pythona, mimo że już go miałem.


0

To zadziałało dla mnie. Próbowałem różnych metod, ale to było moje najlepsze rozwiązanie.

Otwórz wiersz polecenia i wpisz następujące; pip install opencv-python. (upewnij się, że masz włączony internet). następnie spróbuj ponownie zaimportować.



-2

Znalazłem rozwiązanie, może możesz spróbować użyć okna cmd zamiast okna zachęty anakondy, aby rozpocząć pierwszy test scrapy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.