2009-10-13 49 views
75

मेरा एप्लिकेशन इस तरह दिखता है:मैं अजगर कार्यक्रम कैसे वितरित कर सकता हूं?

 
main.py 
windows/ 
    __init__.py 
    mainwindow.py 
    ... 
model/ 
    __init__.py 
    orders.py 
    ... 
resources/ 
    image1.png 
    logo.jpg 
    ... 

प्रोग्राम main.py के साथ शुरू किया गया है। क्या इसमें से एक 'अंतिम' आवेदन बनाने का कोई अच्छा तरीका है? मैं py2exe/py2app की तरह कुछ सोच रहा हूं, लेकिन आवेदन में पाइथन दुभाषिया/मॉड्यूल की प्रतिलिपि किए बिना, जहां केवल एक निष्पादन योग्य है।

मैंने distutils पर एक नज़र डाली थी, लेकिन ऐसा लगता है कि यह एक प्रोग्राम को पायथन निर्देशिका में स्थापित करता है, जो गैर-लिनक्स प्लेटफॉर्म पर सामान्य नहीं है।

इस समय मैं बस संपूर्ण स्रोत फ़ोल्डर को लक्ष्य मशीन पर कॉपी करता हूं और विंडोज़ पर main.pyw पर उपनाम बनाता हूं। कुछ असुविधाएं:

  • आइकन डिफ़ॉल्ट पायथन आइकन है।
  • मुझे मैन्युअल रूप से उपनाम बनाना है।
  • मेरी स्रोत निर्देशिका में स्रोत नियंत्रण फ़ोल्डर जैसी कई अतिरिक्त फ़ाइलें हैं।
  • मुझे main.py को main.pyw मैन्युअल रूप से पुनर्नामित करना होगा।
  • यह अच्छा होगा अगर केवल '.pyo * फ़ाइलें लक्ष्य मशीन पर हों। इसके लिए कोई वास्तविक कारण नहीं है, मुझे अनावश्यक फाइलें पसंद नहीं हैं।

कोई एक अच्छा स्वचालित वितरण कैसे बनाता है? खिड़कियों के लिए

  • ? (यह एकमात्र मंच है जिसे मुझे इस समय समर्थन करना है।) Xzx68
  • मैक के लिए? linux के लिए
  • ?
+2

"मैं distutils पर एक नज़र था, लेकिन यह लगता है कि यह अजगर निर्देशिका, जो गैर Linux प्लेटफार्मों पर सामान्य नहीं है में एक कार्यक्रम स्थापित करता है। " आप ऐसा क्यों कह रहे हैं? आपने क्या पाठ पढ़ा था? यह निश्चित रूप से असत्य है, आपको उस छाप को कहाँ मिला? –

+0

[पाइथन में लिखे गए वितरण कार्यक्रमों का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/4190635/distributing-programs-written-in-python) – SebasSBM

उत्तर

29

पायथन अनुप्रयोगों को वितरित करने का सामान्य तरीका distutils के साथ है। यह पुस्तकालय प्रकार पायथन मॉड्यूल, और पायथन अनुप्रयोगों को वितरित करने के लिए दोनों बनाया गया है, हालांकि मुझे नहीं पता कि यह विंडोज पर कैसे काम करता है। यदि आप किसी भी मामले में distutils का उपयोग करते हैं, तो आपको विंडोज़ पर पाइथन को अलग से स्थापित करना होगा।

मैं शायद अनुशंसा करता हूं कि आप इसे Linux के लिए disutils, और Py2exe या Windows के लिए कुछ समान वितरित करें। ओएस एक्स के लिए मुझे नहीं पता। यदि यह एक अंतिम उपयोगकर्ता एप्लिकेशन है तो आप शायद डिस्क छवि प्रकार की चीज़ चाहते हैं, मुझे नहीं पता कि यह कैसे करें। लेकिन इसके उपयोगकर्ता अनुभव के बारे में अधिक जानकारी के लिए this post पढ़ें। प्रोग्रामर के लिए किए गए एक आवेदन के लिए आप शायद ओएस एक्स पर एक डिस्ट्यूट प्रकार स्थापित करने के साथ ठीक हैं।

+1

मैक और लिनक्स इस समय महत्वपूर्ण नहीं हैं। Py2app .app बंडल बनाता है। और मुझे लगता है कि .dmg में शिपिंग मैक ऐप्स पुराना है, किसी को .zip का उपयोग करना चाहिए। क्या एक निर्देशिका 'dist' बनाने के लिए distutils का उपयोग करना संभव है और उसमें सभी प्रासंगिक फाइलों की प्रतिलिपि बनाना संभव है? –

+1

@gs: sdist कमांड सभी स्रोत फ़ाइलों की एक टैर फ़ाइल बनाएगा। –

+4

@gs: .dmg में शिपिंग मैक ऐप्स वास्तव में बेहद आम है। .dmg डिस्क छवियां हैं, और अनुप्रयोगों के लिए प्रारूप नहीं है (जो .app होगा)। इस प्रकार, आप अक्सर कुछ रीडमे फ़ाइल के साथ एक .dmg के अंदर एक एकल .app पाते हैं। – EOL

1

यदि आप विंडोज़ पर वितरण कर रहे हैं, तो सभी प्रासंगिक फाइलों/इंटरपेटर को जो भी आवश्यक हो, स्थापित करने के लिए installer का उपयोग करें। Setup.exe वितरित करें। विंडोज़ पर यह सबसे अच्छा तरीका है। अन्यथा उपयोगकर्ता शिकायत करेंगे।

+1

मुझे इंस्टॉलर की आवश्यकता नहीं है क्योंकि केवल एक उपयोगकर्ता है जो प्रोग्राम का उपयोग करने जा रहा है। लेकिन निश्चित रूप से जब अधिक उपयोगकर्ताओं के लिए एक प्रोग्राम लिखना जो विंडोज़ पर होना चाहिए। –

+1

@gs: ओह, केवल एक उपयोगकर्ता। ठीक है, तो मैं एक बुनियादी वितरण पैकेज, या तो एक स्रोत वितरण या एक विंडोज बाइनरी इंस्टॉलर बनाने की सिफारिश करेंगे। यह एक पायथन मॉड्यूल वितरित करने के लिए निश्चित रूप से एक आसान और अच्छा तरीका है। –

47

मैं अत्यधिक Pyinstaller की सलाह देता हूं, जो सभी प्रमुख प्लेटफार्मों को बहुत सहजता से समर्थन देता है। Py2exe और py2app की तरह, यह विंडोज़ पर एक मानक निष्पादन योग्य और ओएस एक्स पर एक ऐप बंडल का उत्पादन करता है, लेकिन इसके अलावा सामान्य निर्भरताओं को स्वत: हल करने और अतिरिक्त कॉन्फ़िगरेशन tweaks के बिना उन्हें शामिल करने का शानदार काम भी है।

यह भी ध्यान रखें कि यदि आप विंडोज़ में पायथन 2.6 को तैनात कर रहे हैं, तो आपको this patch को पाइइंस्टॉलर ट्रंक पर लागू करना चाहिए।

आपने संकेत दिया कि आपको इंस्टॉलर की आवश्यकता नहीं है, लेकिन Inno Setup विंडोज प्लेटफ़ॉर्म के लिए उपयोग करने में आसान और त्वरित सेटअप करने के लिए आसान है।

+0

इस मामले के लिए ओवरकिल, क्योंकि उसके पास केवल एक उपयोगकर्ता है, लेकिन एक सॉफ्टवेयर की एक अच्छी सिफारिश आम तौर पर मैं भूल गया था। +1 –

+3

मुझे यकीन नहीं है कि यह अधिक है। पाइइंस्टॉलर के साथ एक ऐप को बंडल करना वास्तव में अन्य तरीकों से आसान हो सकता है, खासतौर पर उन लोगों के साथ जो सी एक्सटेंशन पर निर्भरता रखते हैं ... ज्यादातर मामलों में एक लाइन कमांड लाइन कॉल के रूप में सरल है। पायथन + निर्भरताओं को स्थापित करना + ऐप स्वयं (चाहे डिस्ट्यूट, इत्यादि, या सिर्फ एक ज़िप फ़ाइल के माध्यम से) अधिक शामिल है, खासकर यदि डेवलपर स्वयं लक्ष्य मशीन को मैन्युअल रूप से कॉन्फ़िगर करने में सक्षम नहीं है और उसे क्लाइंट को निर्देश प्रदान करने की आवश्यकता है। कम से कम विंडोज़ पर, मुझे लगता है कि वितरण की शैली समझ में आता है। –

+1

pyinstaller के साथ थोड़ा असुविधाजनक, जब आप pyinstaller के साथ निष्पादित निष्पादन योग्य का उपयोग करते हैं, तो निष्पादन की शुरुआत में कुछ सेकंड लगते हैं। – JuanPablo

5

फ्रेड्रिक लुंड का squeeze.py एक ऐसी फ़ाइल बना सकता है जिसमें पाइथन दुभाषिया नहीं है, लेकिन इसके बजाय बाइटकोड है। सही तर्क के साथ, आप परिणाम फ़ाइल में अन्य फाइलें, मॉड्यूल इत्यादि शामिल कर सकते हैं। मैंने इसे एक परियोजना में सफलतापूर्वक इस्तेमाल किया। परिणामी कार्यक्रम बिना किसी समस्या के ओएस एक्स, लिनक्स और विंडोज पर चला गया!

पीएस: प्रत्येक मशीन को पाइथन दुभाषिया होना चाहिए जो squeeze.py द्वारा उत्पन्न बाइटकोड के साथ संगत है। यदि आवश्यकता हो तो आप पाइथन के विभिन्न संस्करणों के लिए अलग-अलग बाइटकोड संस्करण उत्पन्न कर सकते हैं (केवल पायथन के सही संस्करण के साथ squeeze.py चलाएं)।

+0

बहुत आशाजनक लग रहा है, मैं इसे देख लूंगा। –

2

मुझे गलत हो सकता है, लेकिन क्या आयरनपीथन विंडोज के लिए कंपाइलर में निर्मित नहीं है?

http://www.ironpython.net

[संपादित करें]

Cx_Freeze आज़माएं, अब तक सबसे अच्छा .py (प्लस कुछ .dlls) .exe को संकलक मैं कभी उपयोग किया है।

http://cx-freeze.sourceforge.net/

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