ImportError: DLL yüklemesi başarısız oldu:% 1 geçerli bir Win32 uygulaması değil. Ama DLL'ler var


112

ImportError'daki duruma çok benzer bir durumum var: DLL yükleme başarısız oldu:% 1 geçerli bir Win32 uygulaması değil , ancak oradaki yanıt benim için çalışmıyor.

Python kodum diyor ki:

import cv2

Ancak bu satır, bu sorunun başlığında gösterilen hatayı atıyor.

C:\lib\opencvBu 64 bit makineye OpenCV yükledim . 64 bit Python kullanıyorum.

Benim PYTHONPATH değişken: PYTHONPATH=C:\lib\opencv\build\python\2.7. Bu klasör içerir cv2.pydve hepsi bu.

PATH değişkenim: Path=%OPENCV_DIR%\bin;...Bu klasör, gibi 39 DLL dosyası içerir opencv_core246d.dll.

OPENCV_DIR bu değere sahiptir: OPENCV_DIR=C:\lib\opencv\build\x64\vc11.

ImportError'daki çözüm : DLL yüklemesi başarısız oldu:% 1 geçerli bir Win32 uygulaması değil " C:\opencv\build\bin\ReleaseWindows PATH ortam değişkenine yeni opencv ikili yolu ( ) " eklemeyi söylüyor . Ancak yukarıda gösterildiği gibi, PATH'imde zaten OpenCV ikili dosyaları klasörüne ( C:\lib\opencv\build\x64\vc11\bin) sahibim. Ve OpenCV kurulumumda herhangi bir Yayın klasörü yok (build / java altındaki boş bir klasör hariç).

Neyin yanlış gittiğine dair bir fikriniz var mı? Python'a yükleme sürecini ayrıntılı bir şekilde izlemesini söyleyebilir miyim? Tam olarak hangi DLL'leri arıyor?

Teşekkürler Lars

DÜZENLE:

Sadece göre fark http://www.dependencywalker.com/ , cv2.pydiçinde C:\lib\opencv\build\python\2.7koşuyorum makine ve Python 64 bit iken, 32-bit vardır. Sorun bu olabilir mi? Ve öyleyse, cv2.pyd'nin 64 bit sürümünü nerede bulabilirim?


9
burayı tıklayın ve 64 bit opencv'yi bulun
Kill Console

1
@KillConsole: teşekkürler, deneyeceğim. İndirdiğim yükleme paketinde hem x86 hem de x64 alt klasörleri bulunduğundan, 64 bit için olması gereken her şeyi içerdiğini varsaydım. Görünüşe göre öyle değil. Yaşasın, bu sorunu çözdü! Şimdi "ImportError: numpy.core.multiarray içe aktarılamadı" konusundayız, bu yüzden aynı siteyi 64-bit numpy için deneyeceğim. Yorumunuzu bir cevaba çevirirseniz, oy veririm ve kabul ederim.
LarsH

hangi Python sürümünü kullandınız? (işlemci bit sürümü açısından değil)

1
@Begueradj: 2.7, eğer sorduğun buysa.
LarsH

1
Aynı sorunu yaşadım ve aşağıdaki çözümlerden hiçbiri bana yardımcı olmadı, bu yüzden PYTHONPATHSimpleCV kütüphanesinin kurulumunun orada bıraktığı girişleri içerdiği ortaya çıktı . SimpleCV'yi zaten kaldırmış olmama rağmen, PYTHONPATHgeri yüklenmedi ve SimpleCV yüklemesinin bıraktığı çakışan OpenCV sürümlerine sahip bazı dizinlere işaret ediyordu. Çözüm: temizleyin PYTHONPATH.
Anton Daneyko

Yanıtlar:



42

Lütfen kullandığınız python sürümünün de 64 bit olup olmadığını kontrol edin. Aksi takdirde sorun bu olabilir. 32 bit python sürümü kullanıyor olacak ve OPENCV kitaplığı için 64 bit ikili dosyalar kurmuş olacaktınız.


Soruda belirtildiği gibi 64-bit Python kullanıyordum.
LarsH

18

Vay canına, bu sorun için başka bir durum daha buldum. Yukarıdakilerin hiçbiri işe yaramadı. Sonunda, python'un yüklenen şeyi iç gözlemleme yeteneğini kullandım. Python 2.7 için bunun anlamı:

import imp
imp.find_module("cv2")

Bu, bir Anaconda DLL dizininde, birden fazla kaldırma / yükleme girişimiyle dokunulmayan, tamamen beklenmedik bir "cv2.pyd" dosyası ortaya çıkardı. Python önce oraya bakıyordu ve iyi kurulumumu bulamıyordu. Bu cv2.pyd dosyasını sildim ve imp.find_module ("cv2") 'yi tekrar denedim ve python hemen doğru dosyayı buldu ve cv2 çalışmaya başladı.

Dolayısıyla, diğer çözümlerden hiçbiri sizin için işe yaramazsa, python'un hangi dosyayı yüklemeye çalıştığını görmek için python iç gözlemini kullandığınızdan emin olun.


4
Dosyanın bir sürümünü tamamen farklı bir klasörde çalıştırmaya çalışmakla ilgili bir sorun yaşadım. Buradaki bu çözüm, gerçekte neler olup bittiğini anlamama yardımcı oldu. Teşekkürler!
Emad Y

3
Bu mükemmel bir cevap, teşekkürler! PyDev ile uyumsuz bir python kurulumundan "ctype" yüklediği bir sorunla karşılaştım ve yorumlayıcımı WinPython'u kullanacak şekilde ayarlamam gerektiğini fark ettim, bu da düzeltildi.
eacousineau

7

Benim durumumda, 64bit python'um var ve bu yanlış sürüm olan lxml idi - bunun x64 sürümünü de kullanmalıydım. Bunu, lxml'nin 64 bit sürümünü buradan indirerek çözdüm:

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

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

Bu, sinir bozucu bir sorunun en basit cevabıydı.


6

Bu sorunu henüz yaşadım, sadece opencv dosyasının x64 sürümünü kullandığım için oldu. X86'yı denedim ve işe yaradı.


2

Senin birikmesi sistemin (benim durumumda CKağıt) kopya dosya varsa <name>.dlliçin <name>.pydorijinal dosya aslında bir dll olmasaydı, bu hatayı alırsınız. Benim durumumda, paylaşılan kitaplıklar oluşturma kapatıldı, bu nedenle temel dosya aslında bir *.lib.

Bu hatayı, pyddosyayı DependencyWalker'a yükleyerek ve geçerli olmadığını bularak keşfettim .


2

Ben de aynı sorunu yaşadım. İşte yaptığım şey:

  1. Pywin32 Wheel dosyasını buradan indirdim , sonra

  2. Pywin32 modülünü kaldırdım . Kaldırmak için Komut İstemi'nde aşağıdaki komutu yürütün.

    pip uninstall pywin32

  3. Ardından pywin32'yi yeniden yükledim . Kurmak için, pywin32 tekerlek dosyasının bulunduğu dizinde Komut İstemi'ni açın. Ardından aşağıdaki komutu yürütün.

    pip install <Name of the wheel file with extension> Tekerlek dosyası şöyle olacaktır: piwin32-XXX-cpXX-none-win32.whl

Benim için sorunu çözüyor. Denemek de isteyebilirsiniz. Umarım sizin için de çalışır.


2

Ben kopyalanan cv2.pyddosyayı /opencv/build/python/2.7/x86klasörden yerine gelen /x64klasör C:/Python27/Lib/site-packeges. Burada verilen talimatların geri kalanını takip ettim .

Başka biri tarafından eklendi, doğrulanmadı: Dosyayı cv2.pydda klasöre kopyalıyorum C:/Python27/Lib/site-packages/cv2. İşe yarıyor.


1

Benim için sorun, aynı Eclipse projesinde Python'un farklı sürümlerini kullanmamdı . Kurulumum Proje Özellikleri ve Çalıştırma Yapılandırması Python sürümleri ile tutarlı değildi .

In Projesi> Özellikleri> Pydev , ben Python2.7.11 için Tercüman seti vardı.

In Run Yapılandırmalar'ın> yorumlayıcı , ben Varsayılan Yorumlayıcı'yı kullanıyordum. Python 2.7.11 olarak değiştirmek sorunu çözdü.


1

Bir 32 bit Windows Installer kullanarak sistemimde farklı bir 2.7.x Python sürümünü kaldırıp yeniden yüklediğimde de aynı sorunla karşılaştım. İthalat beyanlarımın çoğunda aynı hatayı aldım. Yeni yüklenen Python'u kaldırdım ve 64 bit Windows yükleyicisini indirdim ve Python'u tekrar yükledim ve işe yaradı. Umarım bu size yardımcı olur.


1

Bu yüzden windows altında vtk kurarken sorun yaşadım (python 3.7 kullandığım için şu ana kadar ikili dosya yok sadece eski python sürümleri için pip install vtk çalışmıyor)

Cmd'ime python yazdım:

Python 3.7.3 on win32

Artık python 3.7.3'ün 32 bit üzerinde çalıştığını biliyorum.

Daha sonra doğru tekerleği VTK ‑ 8.2.0 ‑ cp37 ‑ cp37m ‑ win32.whl adresinde indirdim

Sonra o tekerleği taktım:

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

Sonra test ettim ve işe yaradı:

python
import vtk


0

Önce ' cv2.pydden' /opencv/build/python/2.7/x86e kopyaladım C:/Python27/Lib/site-packeges. Hata

"RuntimeError: modül, API sürüm 9'a göre derlendi, ancak numpy'nin bu sürümü 7"

Sonra kurdum numpy-1.8.0-win32-superpack-python2.7.exeve opencv iyi çalışıyor.

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


0
  1. Lütfen python 2.7.12 veya daha düşük bir sürümü yüklediğinizden emin olun, aksi takdirde bu hatayı kesinlikle alırsınız.
  2. İşletim sistemi 64 Bit ise Oracle istemcisinin 64 bit kurulu olduğundan emin olun.
  3. Python 2.7 için Microsoft Visual C ++ Compiler'ın 64 bit işletim sistemleri için bit için 64 veya 32 bit için 32 bit olduğundan emin olun. Not: - İşletim sisteminiz 64 bit ise, tüm 64 bit paketini kurun veya İşletim Sistemi 32 bit ise 32 bit paketi yükleyin.

0

Çok basit bir çözümü var. opencv Yer kurduktan sonra

cv2.pyddan C:\opencv\build\python\2.7\ **x64**hiçC:\Python27\Lib\site-packages

bunun yerine, yerin cv2.pydgelen C:\opencv\build\python\2.7\ **x86**etmekC:\Python27\Lib\site-packages


0

MySQLdb'yi içe aktarmaya çalışırken bu hatayı aldım.

Benim için işe yarayan şey Python'u kaldırıp yeniden yüklemekti.

Npm'yi ( https://www.npmjs.com/get-npm ) yükledikten sonra hatayı aldım . Yaptığı bir şey, zaten sahip olduğum halde Python'u kurmaktı.


0

Bu benim için çalıştı. Farklı yöntemler denedim ama bu benim en iyi çözümümdü.

Komut istemini açın ve aşağıdakileri yazın; pip install opencv-python. (internetinizin açık olduğundan emin olun). daha sonra tekrar içe aktarmayı deneyin.


0

Bu benimle çalıştı

pip install -- pywin32==227

1
Stack Overflow'a hoş geldiniz. Neden senin için çalıştı? Lütfen bu yanıta daha fazla ayrıntı ekleyebilir misiniz?
Azametzin

-2

Çözümü buldum, belki ilk hurda testine başlamak için anaconda istem penceresi yerine cmd penceresini kullanmayı deneyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.