2009-09-11 11 views
6

हमारे पास एक (विंडोज़) एप्लिकेशन है, जिसके साथ हम एक संपूर्ण पायथन इंस्टॉलेशन (हमारे द्वारा उपयोग किए जाने वाले कई तृतीय-पक्ष मॉड्यूल सहित) वितरित करते हैं, इसलिए हमारे पास स्थिरता है और इसलिए हमें सब कुछ इंस्टॉल करने की आवश्यकता नहीं है अलग से। यह बहुत अच्छी तरह से काम करता है, लेकिन आवेदन बहुत बड़ा है।ट्रिमिंग पायथन रनटाइम

जाहिर है, हम रनटाइम में उपलब्ध सब कुछ का उपयोग नहीं करते हैं। मैं केवल उस समय को शामिल करने के लिए रनटाइम को ट्रिम करना चाहता हूं जो हमें वास्तव में चाहिए।

मैं py2exe को आजमाने की योजना बना रहा हूं, लेकिन मैं कोशिश करना और एक और समाधान ढूंढना चाहता हूं जो मुझे पाइथन रनटाइम के अनियंत्रित हिस्सों को हटाने में मदद करेगा।

+1

बहुत बढ़िया सवाल है, मुझे पता है कि कैसे और साथ ही मेरी अजगर निष्पादनयोग्य के आकार को कम करना चाहते हैं। याद रखें कि यदि आप WxPython का उपयोग कर रहे हैं, तो कुछ विंडोज़ वितरण, XP शामिल हैं, बूटस्ट्रैप के लिए आवश्यक DLL फ़ाइलों (MSVCR71.DLL और MSVCP71.DLL) की आवश्यकता नहीं होगी। –

+0

एक और सवाल: क्या स्थिरता के मामले में py2exe "उत्पादन तैयार" माना जाता है? – Dave

उत्तर

5

दोनों py2exe और pyinstaller (नोट: बाद के उपयोग के लिए SVN संस्करण, जारी किया गया एक दांत ;-) उनके modulefinder के माध्यम से "काट-छाँट" कर में बहुत लंबा है, सभी मॉड्यूल को खोजने के लिए मानक पुस्तकालय मॉड्यूल का इस्तेमाल किया किसी दिए गए पायथन लिपि द्वारा; यदि आप pyinstaller या py2exe पर भरोसा नहीं करते हैं तो आप सभी आवश्यक मॉड्यूल की पहचान करने के लिए बाद में स्वयं का उपयोग कर सकते हैं, अगर आप इसे ठीक से और स्वचालित रूप से अपनी ओर से कर सकते हैं।

6

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

1

यह py2exe page on compression किसी भी DLLs या .pyd फ़ाइलों को संपीड़ित करने के लिए UPX का उपयोग करने का सुझाव देता है (जो वास्तव में केवल डीएलएल हैं)। जाहिर है यह अनियंत्रित मॉड्यूल को ट्रिम करने में मदद नहीं करता है, लेकिन यह एक बड़ी चिंता है, तो यह आपके वितरण के आकार को ट्रिम कर सकता है।

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