2010-01-20 11 views
5

मैं विंडोज पर py2exe 0.6.9 और पायथन 2.6.4 का उपयोग कर एक पायथन एप्लिकेशन को बंडल करने का प्रयास कर रहा हूं। निष्पादन प्रणाली मैं इसे बनाने के लिए उपयोग पर ठीक चलाता है, यह विफल रहता है, जब मैं एक और सिस्टम पर इसे चलाने के लिए प्रयास:मेमोरी लोड करें py2exe अनुप्रयोग चलाने की कोशिश करते समय त्रुटि

C:\Documents and Settings\Administrator\Desktop\dist>.\backend.exe install 
Traceback (most recent call last): 
    File "boot_service.py", line 6, in <module> 
    File "zipextimporter.pyo", line 82, in load_module 
    File "win32serviceutil.pyo", line 9, in <module> 
    File "zipextimporter.pyo", line 98, in load_module 
ImportError: MemoryLoadLibrary failed loading win32api.pyd 

मैं एक मजबूत कूबड़ है कि मैं एक पुस्तकालय याद कर रहा हूँ है, लेकिन मैं एम अनिश्चित है जो — विशेष रूप से निर्भरता जांचकर्ता लक्ष्य प्रणाली पर लापता होने के रूप में कुछ भी फ़्लैग नहीं कर रहा है। मुझे कैसे आगे बढ़ना चाहिए?

उत्तर

1

आप मैन्युअल रूप से डीएलएल और निर्भरता जांच कर सकते हैं। जब आप exe उत्पन्न करते हैं तो मुझे यकीन है कि आपने देखा है कि यह आवश्यक/उपयोग किए गए डीएलएल को प्रिंट करता है। सिस्टम पर जांचें, जहां exe काम नहीं कर रहा है, अगर डीएलएल मौजूद है और यदि वे एक ही संस्करण हैं।

एक और बात। क्या आप पूरे डिस्ट फ़ोल्डर को सिस्टम या सिर्फ एक्सई में कॉपी कर रहे हैं, क्योंकि आपको पूरे डिस्ट फ़ोल्डर की आवश्यकता है, न केवल एक्सई।

+0

मैं * डीएलएल की जांच कर रहा हूं, और वे * कम से कम नाम में हैं।निर्भरता परीक्षक इसकी पुष्टि कर रहा है। मैं पूरे डिस्ट फ़ोल्डर की प्रतिलिपि बना रहा हूं, सिर्फ एक्सई नहीं। –

+0

और उन डीएल के संस्करण? क्या आपने उन्हें चेक किया था। – Paul

1

क्या आप 64 बिट/विस्टा पर py2exe रूपांतरण कर रहे हैं?

मैं एक विस्टा 64 बिट पर अपना कोड लिख रहा हूं, और मेरे द्वारा बनाई गई .exe फ़ाइलें आमतौर पर 32 बिट XP पर काम नहीं करती हैं (वे दो मशीनें हैं जो मेरे पास हैं)।

.exe मदद से ट्रेसबैक के साथ एक टेक्स्ट फ़ाइल फेंकता है, और ऐसा लगता है कि 64 बिट विंडोज Win32api.dll का उपयोग करता है। मुझे लगता है कि यह 32 बिट ओएस व्यवहार को दोहराने के लिए 64 बिट विंडोज़ द्वारा उपयोग किया जाने वाला एक डीडी है, इसलिए मैं बस एक ही स्क्रिप्ट लेता हूं और 32 बिट एक्सपी पर रूपांतरण करता हूं। उम्मीद है की वो मदद करदे।

0

बस भविष्य में यहां आने वाले किसी भी व्यक्ति के लिए। आप Win32 पुस्तकालय के किसी भी प्रकार का उपयोग कर रहे हैं और यू त्रुटियों के इस प्रकार आप निम्न चरणों कर सकते हैं के साथ फंस हैं:

  • समस्या मुद्दा Win32 कार्यों के बीच एक संघर्ष dll फ़ाइलों और py2exe स्वचालित रूप से dll फ़ाइलों है कि वहाँ है ।

    import win32crypt 
    win32crypt.CryptUnprotectData(...) 
    

    मैं प्रयोग किया है:

    निम्न कोड के अनुसार: तो यह संघर्ष आपके पास पता करने के लिए अपने कार्यों के लिए आवश्यक dll फ़ाइलों, तो सेटअप विकल्प

उदाहरण से इन फ़ाइलों को बाहर हल करने के लिए CryptUnprotectData फ़ंक्शन इसलिए मैंने CryptUnprotectData आवश्यक डीएल की खोज की और मुझे निम्न जानकारी enter link description here मिली, जैसा कि आप देख सकते हैं,
"Crypt32.dll" आवश्यक है।

इसलिए मैं अपने setup.py संपादित कि

includes = ["win32crypt"] 
dll_excludes=["Crypt32.dll"] 


setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True,'dll_excludes': dll_excludes,'includes': includes}}) 

की तरह लग रहे हो और यह पूरी तरह से काम किया।

संबंधित मुद्दे