2015-12-29 7 views
6

मैं पाइथन और कोडिंग नौसिखिया हूं। मैंने पोस्ट की खोज करने की कोशिश की है, लेकिन ऐसा लगता है कि मुझे एक ही समस्या के साथ अन्य सामना नहीं मिल रहा है।py2exe ओपनसीवी आयात होने पर डीएलएल गायब होने के कारण EXE बनाने में विफल रहता है

मैं अजगर 2.7 और opencv3.0 उपयोग कर रहा हूँ विंडोज 10 पर

मैं py2exe का उपयोग कर एक EXE फ़ाइल करने के लिए अपने .py फ़ाइल कन्वर्ट करने के लिए कोशिश की। हालांकि, कमांड विंडो ने मुझे बताया।

error: [Errno 2] No such file or directory: 'api-ms-win-core-registry-l1-1-0.dll' 

यह मेरा setup.py

from distutils.core import setup 
import py2exe 
import matplotlib 
import FileDialog 
setup(windows=['HW6.py'], 
     options={ 
       'py2exe': { 
       "includes" : ["matplotlib.backends.backend_tkagg","cv2"], 

       'excludes': ['_gtkagg', '_tkagg', '_agg2', '_cairo','_cocoaagg', 
           "matplotlib.numerix.fft","sip", "PyQt4._qt", 
           "matplotlib.backends.backend_qt4agg", 
           "matplotlib.numerix.linear_algebra", 
           "matplotlib.numerix.random_array", 
          '_fltkagg', '_gtk','_gtkcairo' ], 

       'dll_excludes': ['libgdk-win32-2.0-0.dll', 
           'libgobject-2.0-0.dll' , 
           'MSVCP90.dll'] 
       } 

       }, 

     data_files=matplotlib.get_py2exe_datafiles(),) 

हो जाने के बाद मैं बाहर की गई 'api-एमएस जीत कोर-रजिस्ट्री-l1-1-0.dll', एक और त्रुटि पॉप और

कहा
error: [Errno 2] No such file or directory: 'api-ms-win-core-errorhandling-l1-1-1.dll' 

मैंने कई डीएलएल को छोड़कर, अभी भी कुछ डीएलएल गायब हैं। यहाँ मैं

'api-ms-win-core-string-l1-1-0.dll', 
'api-ms-win-core-registry-l1-1-0.dll', 
'api-ms-win-core-errorhandling-l1-1-1.dll', 
'api-ms-win-core-string-l2-1-0.dll', 
'api-ms-win-core-profile-l1-1-0.dll', 
'api-ms-win-core-processthreads-l1-1-2.dll', 
'api-ms-win-core-libraryloader-l1-2-1.dll', 
'api-ms-win-core-file-l1-2-1.dll', 
'api-ms-win-security-base-l1-2-0.dll', 
'api-ms-win-eventing-provider-l1-1-0.dll', 
'api-ms-win-core-heap-l2-1-0.dll', 
'api-ms-win-core-libraryloader-l1-2-0.dll', 
'api-ms-win-core-localization-l1-2-1.dll', 
'api-ms-win-core-sysinfo-l1-2-1.dll', 
'api-ms-win-core-synch-l1-2-0.dll', 
'api-ms-win-core-heap-l1-2-0.dll' 

क्या बाहर रखा गया है यहाँ 'HW6.py'

import matplotlib.pyplot as plt 
from Tkinter import * 
from PIL import ImageTk,Image 
import numpy as np 
import copy 
import FileDialog 
import warnings 
import cv2 

बिना

import cv2 

सब कुछ ठीक काम करता है में आयातित बातें कर रहे हैं। मुझे नहीं पता कि उन डीएलएल से कैसे निपटें। धन्यवाद!

+0

वर्तनी त्रुटि? '" मैंने कई डीएलएल को छोड़कर, अभी भी कुछ डीएलएल गायब हैं "** नोट ** ** – Torxed

+0

मुझे यह एक वर्तनी समस्या नहीं है। मैं वास्तव में उन्हें शामिल करने के बजाय डीएलएल को "बाहर" करना चाहता हूं, जो मेरे लिए इस तरह की समस्या का सामना करते समय मेरे लिए काम करता है।हालांकि इस बार बहुत अधिक डीएलएल गलत हो गए और मुझे नहीं पता कि इसे कैसे ठीक किया जाए। – tsao

उत्तर

2

शायद ही एक व्यावहारिक जवाब है, लेकिन मैं एक ही समस्या थी और कह सकते हैं कि api-एमएस कोर * DLLs बाहर रखा जाना करने की जरूरत है कि की पूरी सूची मेरे लिए है:

"dll_excludes": ["MSVCP90.dll","libzmq.pyd","geos_c.dll","api-ms-win-core-string-l1-1-0.dll","api-ms-win-core-registry-l1-1-0.dll","api-ms-win-core-errorhandling-l1-1-1.dll","api-ms-win-core-string-l2-1-0.dll","api-ms-win-core-profile-l1-1-0.dll","api-ms-win*.dll","api-ms-win-core-processthreads-l1-1-2.dll","api-ms-win-core-libraryloader-l1-2-1.dll","api-ms-win-core-file-l1-2-1.dll","api-ms-win-security-base-l1-2-0.dll","api-ms-win-eventing-provider-l1-1-0.dll","api-ms-win-core-heap-l2-1-0.dll","api-ms-win-core-libraryloader-l1-2-0.dll","api-ms-win-core-localization-l1-2-1.dll","api-ms-win-core-sysinfo-l1-2-1.dll","api-ms-win-core-synch-l1-2-0.dll","api-ms-win-core-heap-l1-2-0.dll","api-ms-win-core-handle-l1-1-0.dll","api-ms-win-core-io-l1-1-1.dll","api-ms-win-core-com-l1-1-1.dll","api-ms-win-core-memory-l1-1-2.dll","api-ms-win-core-version-l1-1-1.dll","api-ms-win-core-version-l1-1-0.dll"] 

सब कुछ सामान्य रूप में काम किया उसके बाद।

+0

वाह, कितनी लंबी सूची! मैं इसे कुछ दिनों बाद कोशिश करूँगा और रिपोर्ट करूंगा कि यह मेरे लिए भी काम करता है। आपका बहुत बहुत धन्यवाद! – tsao

3

मुझे लगता है कि मैंने यह पता लगाया है कि समस्या क्या है। ऐसा इसलिए है क्योंकि cv2.pyd कुछ सिस्टम स्तर डीएल पर निर्भर है (यदि आपके पास विजुअल स्टूडियो स्थापित है, तो "डंपबिन/आश्रित cv2.pyd" आज़माएं), और उन्हें py2exe द्वारा अनदेखा नहीं किया जाता है, उदा।

MSVFW32.dll 
AVIFIL32.dll 
AVICAP32.dll 
ADVAPI32.dll 
CRYPT32.dll 
WLDAP32.dll 

और ये डीएल "एपीआई-एमएस-विन-कोर - *****" पर जवाब देते हैं। यदि आप अपने सॉफ़्टवेयर को अन्य मशीनों में वितरित करना चाहते हैं, तो इन डीएल को भी कॉपी नहीं किया जाना चाहिए।

तो आखिर में, "एपीआई-एमएस-विन-कोर - *****" की बजाय उपरोक्त डीएल को बाहर करने के लिए एक और समझदार समाधान हो सकता है, और इस तरह, समस्या हल हो जाएगी,

"dll_excludes": ["MSVFW32.dll", 
       "AVIFIL32.dll", 
       "AVICAP32.dll", 
       "ADVAPI32.dll", 
       "CRYPT32.dll", 
       "WLDAP32.dll"] 
0

मैं ओपनसीवी का उपयोग नहीं कर रहा हूं, लेकिन एक ही मुद्दे पर फंस गया था। मुझे यह बताने के लिए py2exe को बदलने के बाद कि कौन सी छवियां डीएलएल आयात कर रही थीं, मैंने पाया कि नीचे सूचीबद्ध करने के लिए सूची को विस्तारित करने के लिए मेरे आयातित libs के लिए काम किया गया है (भले ही कुछ को पहले से ही py2exe में बाहर रखा जा सके - कोड टिप्पणियां बताती हैं कि यह व्यापक नहीं है) :

"dll_excludes": [ 
'MSVCP90.dll', 
'IPHLPAPI.DLL', 
'NSI.dll', 
'WINNSI.DLL', 
'WTSAPI32.dll', 
'SHFOLDER.dll', 
'PSAPI.dll', 
'MSVCR120.dll', 
'MSVCP120.dll', 
'CRYPT32.dll', 
'GDI32.dll', 
'ADVAPI32.dll', 
'CFGMGR32.dll', 
'USER32.dll', 
'POWRPROF.dll', 
'MSIMG32.dll', 
'WINSTA.dll', 
'MSVCR90.dll', 
'KERNEL32.dll', 
'MPR.dll', 
'Secur32.dll', 
] 
संबंधित मुद्दे