py2exe

2009-10-24 13 views
6

का उपयोग करके exe के आकार को कम करने के लिए कैसे मैंने पायथन और wxwidgets का उपयोग कर एक छोटा प्रोग्राम विकसित किया। यह एक बहुत ही सरल प्रोग्राम है जो आवश्यक होने पर कुछ जानकारी प्रदर्शित करने के लिए केवल एक मिनी फ्रेम का उपयोग करता है, और शेष समय यह कुछ भी नहीं दिखाता है, केवल टास्कबार में एक आइकन।py2exe

जब मैं py2exe (एकल फ़ाइल exe मोड, अनुकूलित) का उपयोग कर exe का निर्माण करता हूं, तो मुझे 6 एमबी आकार फ़ाइल मिलती है!

मैंने कुछ पुस्तकालयों या डीएलएल को शामिल करने की कोशिश नहीं की, जिनकी आवश्यकता नहीं थी लेकिन फिर भी, मैं नहीं देख सकता कि मुझे केवल एक मिनी फ्रेम और टास्कबार में एक आइकन के लिए इतनी बड़ी फ़ाइल क्यों मिलती है।

क्या py2exe से उत्पन्न exe के आकार को कम करने का कोई तरीका है?

यहाँ

क्या मैं थोड़ा अपने आप को कम करने के लिए किया था:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger', 
           'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl', 
           'Tkconstants', 'Tkinter'], 
        "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 
           'tk84.dll'], 

धन्यवाद।

+1

शायद यह रनटाइम एम्बेडेड हो सकता है? –

उत्तर

1

अधिकांश जगह पाइथन रनटाइम ही है। py2exe आपके प्रोग्राम को देशी x86 निर्देशों, या उसके जैसा कुछ भी "संकलित" नहीं करता है। यह सिर्फ पाइथन, आपकी * .pyc फ़ाइलों को बंडल करता है, और कोई भी मॉड्यूल आपके प्रोग्राम को एक बंडल में उपयोग करता है जो स्वयं चलता है।

इसलिए आप केवल अपनी * .pyc फ़ाइलों को वितरित करना चुन सकते हैं और उपयोगकर्ता को अपना पाइथन वितरण प्रदान करने और किसी आवश्यक मॉड्यूल को स्थापित करने के लिए इसे छोड़ सकते हैं। यह विंडोज पर एक बहुत ही लोकप्रिय विकल्प नहीं है, लेकिन यह आमतौर पर हर जगह होता है।

+1

हाँ मुझे पता है कि py2exe मेरे प्रोग्राम को संकलित नहीं करता है, लेकिन जब मैं आकार को कम करने के लिए उपलब्ध "विकल्प" (जैसा कि मेरी पोस्ट में दिखाया गया है) के बारे में बात कर रहा था। मुझे रनटाइम से कम आकार प्राप्त करने की उम्मीद नहीं है, लेकिन मुझे जो कुछ चाहिए उसे एम्बेड करने के परिणामस्वरूप केवल एक मिनी फ्रेम के लिए स्वीकार्य आकार हो सकता है। – attwad

4

तथ्य यह है कि आपका प्रोग्राम सरल है इसका मतलब यह नहीं है कि यह छोटा है। आपके प्रोग्राम में WxWidget स्टैक के माध्यम से कई निर्भरता है और 6 एमबी इस सब के साथ दिमाग में इतना बड़ा नहीं दिखता है।

लेकिन, सवाल पर वापस जाएं। एक py2exe उत्पन्न कार्यक्रम हटना करने के लिए आपको कुछ स्पष्ट कर सकते हैं:

  1. कम सामान का वितरण करें: ऐसा लगता है आप पहले से ही इस सड़क शुरू कर दिया। अपने कार्यक्रम के साथ वितरित की गई सभी चीज़ों को देखें और इसकी आवश्यकता होने पर इसे खत्म करें। DllDepend आपको बता सकता है कि आपके प्रोग्राम के साथ एक डीएलएल क्यों वितरित किया जाता है (संभवतः क्योंकि एक पीईडी को इसकी आवश्यकता होती है)। अन्य मॉड्यूल के लिए, उन्हें हटाएं और कोशिश करें कि यह अभी भी काम करता है ...

  2. इसे बेहतर संपीड़ित करें: अपने प्रत्येक डीएल पर अपक्स चलाएं। 7zip अधिकतम संपीड़न स्तर के साथ अपने अंतिम कार्यक्रम/संग्रह को संपीड़ित करें।