ImportError: Pemuatan DLL gagal:% 1 bukan aplikasi Win32 yang valid. Tapi DLL ada di sana

112

Saya memiliki situasi yang sangat mirip dengan yang ada di ImportError: DLL memuat gagal:% 1 bukan aplikasi Win32 yang valid , tetapi jawabannya tidak berfungsi untuk saya.

Kode Python saya mengatakan:

import cv2

Tapi baris itu melempar kesalahan yang ditunjukkan pada judul pertanyaan ini.

Saya telah menginstal OpenCV di C:\lib\opencvmesin 64-bit ini. Saya menggunakan Python 64-bit.

Variabel PYTHONPATH saya: PYTHONPATH=C:\lib\opencv\build\python\2.7. Folder ini berisi cv2.pyddan itu saja.

Variabel PATH saya: Path=%OPENCV_DIR%\bin;...Folder ini berisi 39 file DLL seperti opencv_core246d.dll.

OPENCV_DIR memiliki nilai ini: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

Solusi di ImportError: Beban DLL gagal:% 1 bukan aplikasi Win32 yang valid mengatakan untuk menambahkan "jalur binari opencv baru ( C:\opencv\build\bin\Release) ke variabel lingkungan Windows PATH". Tetapi seperti yang ditunjukkan di atas, saya sudah memiliki folder binari OpenCV ( C:\lib\opencv\build\x64\vc11\bin) di PATH saya. Dan instalasi OpenCV saya tidak memiliki folder Rilis (kecuali yang kosong di bawah build / java).

Ada ide tentang apa yang salah? Bisakah saya memberi tahu Python untuk melacak proses pemuatan secara verbal? Apa tepatnya DLL yang dicari?

Terima kasih, Lars

EDIT:

Saya baru saja memperhatikan bahwa, menurut http://www.dependencywalker.com/ , cv2.pydin C:\lib\opencv\build\python\2.7adalah 32-bit, sedangkan mesin dan Python yang saya jalankan adalah 64-bit. Mungkinkah itu masalahnya? Dan jika demikian, di mana saya dapat menemukan versi 64-bit dari cv2.pyd?

LarsH
sumber
9
klik sini dan temukan opencv 64-bit
Kill Console
1
@KCCC: terima kasih, saya akan mencobanya. Karena paket instal yang saya unduh memiliki subfolder x86 dan x64, saya berasumsi bahwa itu mencakup semua yang ada untuk 64-bit. Sepertinya tidak. Hore, itu sudah diperbaiki! Sekarang kita menuju ke "ImportError: numpy.core.multiarray gagal untuk mengimpor", jadi saya akan mencoba situs yang sama untuk 64-bit numpy. Jika Anda membuat komentar Anda menjadi sebuah jawaban, saya akan memberi suara positif dan menerimanya.
LarsH
versi Python mana yang Anda gunakan? (bukan dalam hal versi bit prosesor)
1
@Begueradj: 2.7, jika itu yang Anda tanyakan.
LarsH
1
Saya memiliki masalah yang sama dan tidak ada solusi di bawah yang membantu saya, jadi ternyata saya PYTHONPATHdulu berisi entri yang ditinggalkan oleh instalasi pustaka SimpleCV di sana. Meskipun saya telah mencopot pemasangan SimpleCV, namun PYTHONPATHtidak dipulihkan dan mengarah ke beberapa direktori dengan versi OpenCV yang bertentangan yang ditinggalkan oleh pemasangan SimpleCV. Solusi: bersihkan PYTHONPATH.
Anton Daneyko

Jawaban:

81

Binari Windows Tidak Resmi untuk Paket Ekstensi Python

Anda dapat menemukan libs python dari sini

Bunuh Konsol
sumber
ini sangat membantu. Saya tidak yakin apa yang salah. Saya memiliki versi opencv, anaconda3, python3. Menginstal opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64 dari daftar paket di atas dan dapat mengimpor cv2 dengan sukses setelah berjam-jam perjuangan. Terima kasih banyak.
emeralddove
41

Silakan periksa apakah versi python yang Anda gunakan juga 64 bit. Jika tidak, maka itu bisa menjadi masalahnya. Anda akan menggunakan versi python 32 bit dan akan menginstal binari 64 bit untuk pustaka OPENCV.

Clive Verghese
sumber
Seperti yang disebutkan dalam pertanyaan, saya menggunakan Python 64-bit.
LarsH
17

Wow, saya menemukan kasus lain untuk masalah ini. Tak satu pun di atas berhasil. Akhirnya saya menggunakan kemampuan python untuk introspeksi apa yang sedang dimuat. Untuk python 2.7 ini berarti:

import imp
imp.find_module("cv2")

Ini memunculkan file "cv2.pyd" yang benar-benar tidak terduga dalam direktori DLL Anaconda yang tidak tersentuh oleh beberapa kali pencopotan / pemasangan. Python mencari di sana lebih dulu dan tidak menemukan instalasi saya yang bagus. Saya menghapus file cv2.pyd itu dan mencoba imp.find_module ("cv2") lagi dan python segera menemukan file yang benar dan cv2 mulai bekerja.

Jadi jika tidak ada solusi lain yang berhasil untuk Anda, pastikan Anda menggunakan introspeksi python untuk melihat file apa yang sedang coba dimuat python.

Ezekiel Kruglick
sumber
4
Saya mengalami masalah jika mencoba menjalankan versi file di folder yang berbeda sepenuhnya. Solusi ini di sini membantu saya mencari tahu apa yang sebenarnya terjadi. Terima kasih!
Emad Y
3
Ini jawaban yang bagus, terima kasih! Saya mengalami masalah dengan PyDev saat memuat "ctypes" dari instalasi python yang tidak kompatibel, dan saya menyadari bahwa saya perlu menyiapkan penerjemah saya untuk menggunakan WinPython, yang memperbaikinya.
eacousineau
7

Dalam kasus saya, saya memiliki python 64bit, dan itu adalah versi yang salah lxml - saya seharusnya menggunakan versi x64 itu juga. Saya menyelesaikan ini dengan mengunduh versi 64-bit lxml di sini:

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

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

Ini adalah jawaban paling sederhana untuk masalah yang membuat frustrasi.

Amalgovinus
sumber
6

Saya baru saja mengalami masalah ini, ternyata hanya karena saya menggunakan file opencv versi x64. Mencoba x86 dan berhasil.

pohon zaitun
sumber
2

Jika sistem build Anda (CMake dalam kasus saya) menyalin file dari <name>.dllke <name>.pyd, Anda akan mendapatkan kesalahan ini jika file asli sebenarnya bukan dll. Dalam kasus saya, membangun perpustakaan bersama dimatikan, jadi file yang mendasarinya sebenarnya adalah *.lib.

Saya menemukan kesalahan ini dengan memuat pydfile di DependencyWalker dan menemukan bahwa itu tidak valid.

MatrixManAtYrService
sumber
2

Saya memiliki masalah yang sama. Inilah yang saya lakukan:

  1. Saya mengunduh file roda pywin32 dari sini , lalu

  2. Saya menghapus modul pywin32 . Untuk menghapus instalasi, jalankan perintah berikut di Command Prompt.

    pip uninstall pywin32

  3. Kemudian, saya menginstal ulang pywin32 . Untuk menginstalnya, buka Command Prompt di direktori yang sama tempat file roda pywin32 berada. Kemudian jalankan perintah berikut.

    pip install <Name of the wheel file with extension> File roda akan seperti: piwin32-XXX-cpXX-none-win32.whl

Ini memecahkan masalah saya. Anda mungkin juga ingin mencobanya. Semoga berhasil juga untuk Anda.

Abhishek Kashyap
sumber
2

Saya menyalin cv2.pydfile dari /opencv/build/python/2.7/x86folder, bukan dari /x64folder ke C:/Python27/Lib/site-packeges. Saya mengikuti instruksi lainnya yang disediakan di sini .

Ditambahkan oleh orang lain, tidak diverifikasi: Saya juga menyalin file cv2.pydke folder C:/Python27/Lib/site-packages/cv2. Berhasil.

Otonom
sumber
1

Bagi saya masalahnya adalah saya menggunakan versi Python yang berbeda dalam proyek Eclipse yang sama . Pengaturan saya tidak konsisten dengan Properti Proyek dan versi Jalankan Konfigurasi Python.

Di Project> Properties> PyDev , saya mengatur Interpreter ke Python2.7.11.

Di Run Configurations> Interpreter , saya menggunakan Default Interpreter. Mengubahnya ke Python 2.7.11 memperbaiki masalah.

Al Lelopath
sumber
1

Saya menghadapi masalah yang sama ketika saya menghapus dan menginstal ulang versi berbeda dari 2.7.x Python di sistem saya menggunakan Penginstal Windows 32 bit. Saya mendapat kesalahan yang sama di sebagian besar pernyataan impor saya. Saya mencopot pemasangan Python yang baru diinstal dan mengunduh penginstal Windows 64 bit dan menginstal ulang Python lagi dan itu berhasil. Semoga ini bisa membantu Anda.

pengguna3233042
sumber
1

Jadi saya mengalami masalah saat menginstal vtk di bawah windows (karena saya menggunakan python 3.7 sejauh ini tidak ada biner yang tersedia hanya untuk versi python yang lebih lama pip install vtk tidak berfungsi)

Saya memang menulis python di cmd saya:

Python 3.7.3 on win32

Jadi sekarang saya tahu saya memiliki python 3.7.3 yang berjalan pada 32 bit.

Saya kemudian mengunduh roda yang benar di VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl

Selanjutnya saya memasang roda itu:

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

Kemudian saya mengujinya dan berhasil:

python
import vtk
sqp_125
sumber
1

Perbarui numpy.

pip install numpy --upgrade

Bekerja untuk saya !!

Karthik Suresh
sumber
0

Pertama saya salin cv2.pyddari /opencv/build/python/2.7/x86ke C:/Python27/Lib/site-packeges. Kesalahannya adalah

"RuntimeError: modul dikompilasi terhadap API versi 9 tetapi versi numpy ini adalah 7"

Kemudian saya menginstal numpy-1.8.0-win32-superpack-python2.7.exedan opencv berfungsi dengan baik.

>>> import cv2
>>> print cv2.__version__
2.4.13
alireza.dll
sumber
0

Anda dapat menginstal opencvdari resmi atau tidak resmi .

Lihat pertanyaan ini dan masalah ini jika Anda menggunakan Anaconda.

Ramesh-X
sumber
0
  1. Harap pastikan bahwa Anda telah menginstal python 2.7.12 atau versi di bawahnya jika tidak, Anda pasti akan mendapatkan kesalahan ini.
  2. Pastikan klien Oracle 64 bit diinstal jika OS 64 Bit.
  3. Pastikan Microsoft Visual C ++ Compiler untuk Python 2.7 adalah 64 untuk bit untuk 64 bit Os atau 32 bit untuk 32 bit. Catatan: - JIKA OS Anda 64 bit instal semua paket 64 bit atau jika Os 32 bit instal paket 32 ​​bit.
Ranjan
sumber
0

Ini memiliki solusi yang sangat sederhana. Setelah menginstalopencv tempat

cv2.pyd dari C:\opencv\build\python\2.7\ **x64** keC:\Python27\Lib\site-packages

alih-alih, tempatkan cv2.pyddari C:\opencv\build\python\2.7\ **x86**hinggaC:\Python27\Lib\site-packages

sharat kanthi
sumber
0

Saya mendapat kesalahan ini saat mencoba mengimpor MySQLdb.

Apa yang berhasil bagi saya adalah menghapus Python dan menginstalnya kembali.

Saya mendapat kesalahan setelah menginstal npm ( https://www.npmjs.com/get-npm ). Satu hal yang dilakukannya adalah menginstal Python meskipun saya sudah memilikinya.

pengguna984003
sumber
0

Ini berhasil untuk saya. Saya telah mencoba metode yang berbeda tetapi ini adalah solusi terbaik saya.

Buka command prompt dan ketik berikut ini; pip install opencv-python. (pastikan internet Anda aktif). setelah itu coba impor lagi.

pengguna12907613
sumber
0

Yang ini berhasil dengan saya

pip install -- pywin32==227
Mohammed Said El-Sharkawy
sumber
1
Selamat datang di Stack Overflow. Mengapa ini berhasil untuk Anda? Tolong, bisakah Anda menambahkan lebih banyak detail ke jawaban ini?
Azametzin
-2

Saya menemukan solusinya, mungkin Anda dapat mencoba menggunakan jendela cmd daripada jendela prompt anaconda untuk memulai tes memo pertama Anda.

Michael Ye
sumber