ImportError: DLL लोड विफल:% 1 एक मान्य Win32 अनुप्रयोग नहीं है। लेकिन DLL के हैं


112

मेरे पास बहुत कुछ ऐसी स्थिति है जैसे कि ImportError: DLL लोड विफल:% 1 एक मान्य Win32 अनुप्रयोग नहीं है , लेकिन मेरे लिए कोई जवाब नहीं है।

मेरा पायथन कोड कहता है:

import cv2

लेकिन वह पंक्ति इस प्रश्न के शीर्षक में दिखाई गई त्रुटि को फेंक देती है।

मैंने C:\lib\opencvइस 64-बिट मशीन पर OpenCV स्थापित किया है । मैं 64-बिट पायथन का उपयोग कर रहा हूं।

मेरा PYTHONPATH चर PYTHONPATH=C:\lib\opencv\build\python\2.7:। इस फ़ोल्डर में है cv2.pydऔर यह सब है।

मेरा पथ चर: Path=%OPENCV_DIR%\bin;...इस फ़ोल्डर में 39 DLL फ़ाइलें हैं जैसे opencv_core246d.dll

OPENCV_DIR का यह मान है OPENCV_DIR=C:\lib\opencv\build\x64\vc11:।

ImportError पर समाधान : DLL लोड विफल रहा:% 1 एक वैध नहीं है Win32 एप्लिकेशन " C:\opencv\build\bin\Releaseविंडोज पैथ पर्यावरण चर के लिए नया ऑपनेंक बायनेरिज़ पथ ( ) " जोड़ने के लिए कहता है । लेकिन जैसा कि ऊपर दिखाया गया है, मेरे पास पहले से ही C:\lib\opencv\build\x64\vc11\binमेरे PATH में OpenCV बायनेरी फ़ोल्डर ( ) है। और मेरे OpenCV इंस्टॉलेशन में कोई रिलीज़ फ़ोल्डर नहीं है (केवल एक निर्माणाधीन / जावा के अलावा)।

क्या गलत हो रहा है के रूप में किसी भी विचार? क्या मैं लोडिंग प्रक्रिया को ट्रेस करने के लिए पायथन को बता सकता हूं? क्या वास्तव में DLL की तलाश है?

धन्यवाद, लार्स

संपादित करें:

मैंने अभी देखा कि, http://www.dependencywalker.com/ के अनुसार , cv2.pydइन C:\lib\opencv\build\python\2.7-बिट 32-बिट है, जबकि मशीन और पायथन मैं चल रहा हूँ 64-बिट हैं। क्या यह समस्या हो सकती है? और यदि हां, तो मुझे cv2.pyd का 64-बिट संस्करण कहां मिल सकता है?


9
यहाँ क्लिक करें और 64-बिट opencv
किल कंसोल

1
@KillConsole: धन्यवाद, मैं इसे आज़माऊँगा। चूंकि मैंने जो इंस्टाल पैकेज डाउनलोड किया था उसमें x86 और x64 सबफ़ोल्डर दोनों थे, मैंने यह माना कि इसमें 64-बिट के लिए सब कुछ शामिल था। जाहिरा तौर पर नहीं। हुर्रे, कि यह तय! अब हम "ImportError: numpy.core.multiarray आयात करने में विफल रहे हैं", इसलिए मैं 64-बिट के लिए एक ही साइट की कोशिश करूँगा। यदि आप अपनी टिप्पणी एक उत्तर में देते हैं, तो मैं इसे स्वीकार कर लूंगा।
लार्स

आपने किस पायथन संस्करण का उपयोग किया? (प्रोसेसर बिट्स वर्जन के संदर्भ में नहीं)

1
@Begueradj: 2.7, यदि आप पूछ रहे हैं कि क्या है।
लार्स

1
मेरे पास एक ही समस्या थी और नीचे दिए गए समाधानों में से किसी ने भी मेरी मदद नहीं की, इसलिए यह पता चला कि मेरे पास PYTHONPATHउन प्रविष्टियों को शामिल करने के लिए इस्तेमाल किया गया था जो कि SimpleCV पुस्तकालय की स्थापना वहां छोड़ दी है। इसके बावजूद कि मैंने पहले से ही SimpleCV को अनइंस्टॉल कर दिया है, PYTHONPATHबहाल नहीं किया गया था और कुछ निर्देशिकाओं के लिए OpenCV के परस्पर विरोधी संस्करणों के साथ इशारा कर रहा था जो कि SimpleCV द्वारा स्थापित किए गए थे। समाधान: स्पष्ट PYTHONPATH
एंटन डेनेको

जवाबों:


81

पायथन एक्सटेंशन पैकेज के लिए अनौपचारिक विंडोज बायनेरिज़

आप यहाँ से किसी भी अजगर लिबास पा सकते हैं


यह वास्तव में मदद की। मुझे यकीन नहीं है कि क्या गलत था। मेरे पास opencv, anaconda3, python3 का एक संस्करण था। उपरोक्त पैकेज सूची से opencv_python-3.3.0 + contrib-cp35-cp35m-win_amd64 स्थापित किया गया था और संघर्ष के घंटों के बाद सफलतापूर्वक cv2 आयात करने में सक्षम था। अनेक अनेक धन्यवाद।
पन्नाध्वज

41

कृपया जांचें कि क्या आप जिस अजगर संस्करण का उपयोग कर रहे हैं, वह भी 64 बिट का है। अगर नहीं तो यह मुद्दा हो सकता है। आप 32 बिट पायथन संस्करण का उपयोग कर रहे होंगे और OPENCV लाइब्रेरी के लिए 64 बिट बायनेरिज़ को स्थापित किया होगा।


जैसा कि प्रश्न में उल्लेख किया गया है, मैं 64-बिट पायथन का उपयोग कर रहा था।
लार्स

17

वाह, मुझे इस समस्या के लिए एक और मामला मिला। उपरोक्त में से कोई भी काम नहीं किया। आखिरकार मैंने अजगर की क्षमता का इस्तेमाल किया कि वह क्या लोड कर रहा है। अजगर 2.7 के लिए इसका मतलब है:

import imp
imp.find_module("cv2")

यह एक पूरी तरह से अप्रत्याशित "cv2.pyd" फाइल को एनाकोंडा डीएलएल निर्देशिका में बदल दिया गया था जिसे कई अनइंस्टॉल या इंस्टॉल किए गए प्रयासों द्वारा नहीं छुआ गया था। पायथन पहले वहाँ देख रहा था और मेरी अच्छी स्थापना नहीं पा रहा था। मैंने उस cv2.pyd फ़ाइल को हटा दिया और imp.find_module ("cv2") को फिर से आज़माया और अजगर को तुरंत सही फ़ाइल मिल गई और cv2 ने काम करना शुरू कर दिया।

इसलिए यदि कोई अन्य समाधान आपके लिए काम नहीं करता है, तो सुनिश्चित करें कि आप अजगर इंट्रोस्पेक्शन का उपयोग करते हैं यह देखने के लिए कि फ़ाइल अजगर लोड करने की कोशिश कर रहा है।


4
मेरे पास एक समस्या थी कि यह पूरी तरह से एक अलग फ़ोल्डर में फ़ाइल के एक संस्करण को चलाने की कोशिश कर रहा था। इस समाधान ने मुझे यह पता लगाने में मदद की कि वास्तव में क्या चल रहा था। धन्यवाद!
इमाद वाई

3
यह एक उत्कृष्ट उत्तर है, धन्यवाद! मैं PyDev के साथ एक मुद्दे पर भाग गया, जहां यह अजगर की असंगत स्थापना से "ctypes" लोड कर रहा था, और मुझे एहसास हुआ कि मुझे WinPython का उपयोग करने के लिए अपने दुभाषिया को स्थापित करने की आवश्यकता है, जिसने इसे तय किया।
15 अक्टूबर को eacousineau

7

मेरे मामले में, मेरे पास 64 बिट अजगर है, और यह एलएक्सएमएल था जो गलत संस्करण था - मुझे उस के x64 संस्करण का भी उपयोग करना चाहिए था। मैंने इसे 64-बिट संस्करण lxml के यहाँ डाउनलोड करके हल किया है:

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

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

यह एक निराशाजनक मुद्दे का सबसे सरल जवाब था।


6

मुझे बस यह समस्या थी, यह सिर्फ इसलिए कि मैं opencv फ़ाइल के x64 संस्करण का उपयोग कर रहा था। X86 की कोशिश की और यह काम किया।


2

यदि आपकी बिल्ड-सिस्टम (मेरे मामले में CMake) से फ़ाइल की प्रतिलिपि बनाता <name>.dllहै <name>.pyd, तो आपको यह त्रुटि तब मिलेगी जब मूल फ़ाइल वास्तव में एक dll नहीं थी। मेरे मामले में, साझा पुस्तकालयों का निर्माण बंद हो गया, इसलिए अंतर्निहित फ़ाइल वास्तव में एक थी *.lib

मुझे यह त्रुटि DependencyWalkerpyd में फ़ाइल लोड करके और यह मान्य नहीं था कि खोजने से पता चला।


2

मुझे भी यही समस्या थी। यहाँ मैंने क्या किया है:

  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

यह मेरे लिए समस्या हल करता है। आप इसे आजमाना भी पसंद कर सकते हैं। आशा है कि यह आपके लिए भी काम करेगा।


2

मैं कॉपी किया cv2.pydसे फाइल /opencv/build/python/2.7/x86फोल्डर के बजाय से /x64करने के लिए फ़ोल्डर C:/Python27/Lib/site-packeges। मैंने यहां दिए गए बाकी निर्देशों का पालन किया ।

किसी और द्वारा जोड़ा गया, सत्यापित नहीं है: मैं फ़ाइल cv2.pydको फ़ोल्डर में भी कॉपी करता हूं C:/Python27/Lib/site-packages/cv2। यह काम करता हैं।


1

मेरे लिए समस्या यह थी कि मैं एक ही ग्रहण परियोजना में अजगर के विभिन्न संस्करणों का उपयोग कर रहा था । मेरा सेटअप प्रोजेक्ट गुण और रन कॉन्फ़िगरेशन के अनुरूप नहीं था पायथन संस्करणों के ।

में परियोजना> गुण> PyDev , मैं Python2.7.11 को दुभाषिया सेट था।

में चलाने के विन्यास> दुभाषिया , मैं डिफ़ॉल्ट दुभाषिया उपयोग कर रहा था। इसे पायथन 2.7.11 में बदलने से समस्या ठीक हो गई।


1

मुझे उसी समस्या का सामना करना पड़ा जब मैंने 32 बिट बिट इंस्टालर का उपयोग करके अपने सिस्टम पर पायथन के 2.7.x के एक अलग संस्करण को अनइंस्टॉल और पुनः इंस्टॉल किया। मेरे अधिकांश आयात विवरणों में मुझे वही त्रुटि मिली। मैंने नए स्थापित पायथन की स्थापना रद्द की और 64 बिट विंडोज इंस्टॉलर डाउनलोड किया और फिर से पायथन को फिर से स्थापित किया और यह काम किया। आशा है कि यह आपकी मदद करता है।


1

इसलिए मुझे विंडोज़ के तहत vtk को स्थापित करने में समस्या थी (जैसा कि मैं अजगर 3.7 का उपयोग करता हूं। अभी तक कोई बाइनरी उपलब्ध नहीं है। पुराने अजगर संस्करणों के लिए पाइप स्थापित vtk काम नहीं कर रहा है)

मैंने अपने cmd में अजगर लिखा है:

Python 3.7.3 on win32

इसलिए मुझे पता है कि मेरे पास 32 बिट पर चलने वाला अजगर 3.7.3 है।

मैंने तब VTK downloaded 8.2.0 ‑ cp37 7 cp37m 32 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: मॉड्यूल एपीआई संस्करण 9 के खिलाफ संकलित किया गया है लेकिन सुपीरियर का यह संस्करण 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. सुनिश्चित करें कि यदि ओएस 64 बिट है, तो ओरेकल क्लाइंट 64 बिट स्थापित है।
  3. सुनिश्चित करें कि Python 2.7 के लिए Microsoft Visual C ++ कंपाइलर 64 बिट ओएस के लिए 64 या 32 बिट के लिए 32 बिट है। नोट: - यदि ur OS 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 आयात करने का प्रयास करते समय मुझे यह त्रुटि मिली।

मेरे लिए जो काम किया वह था पायथन को अनइंस्टॉल करना और फिर उसे फिर से इंस्टॉल करना।

Npm ( https://www.npmjs.com/get-npm ) इंस्टॉल करने के बाद मुझे त्रुटि मिली । एक बात यह है कि मैं पहले से ही था, भले ही पायथन स्थापित किया गया था।


0

इसने मेरे लिए काम किया है। मैंने विभिन्न तरीकों की कोशिश की है लेकिन यह मेरा सबसे अच्छा समाधान था।

कमांड प्रॉम्प्ट खोलें और निम्न टाइप करें; pip install opencv-python। (सुनिश्चित करें कि आपका इंटरनेट चालू है)। उसके बाद इसे फिर से आयात करने का प्रयास करें।


0

यह एक मेरे साथ काम किया

pip install -- pywin32==227

1
ढेर अतिप्रवाह में आपका स्वागत है। यह आपके लिए क्यों काम किया? कृपया, क्या आप इस उत्तर में अधिक विवरण जोड़ सकते हैं?
एज़ामेत्ज़िन

-2

मैंने समाधान पाया, हो सकता है कि आप पहली बार टेढ़ी-मेढ़ी परीक्षा शुरू करने के लिए एनाकोंडा प्रॉम्प्ट विंडो के बजाय cmd विंडो का उपयोग करने का प्रयास कर सकें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.