2008-09-06 9 views
24

मैंने कुछ .egg फ़ाइलों के बारे में कुछ पढ़ा है और मैंने उन्हें अपनी lib निर्देशिका में देखा है लेकिन डेवलपर के रूप में उपयोग करने के फायदे/नुकसान क्या हैं?अपनी पायथन लाइब्रेरी/एप्लिकेशन को .egg फ़ाइल के रूप में पैकेज करने के क्या फायदे हैं?

उत्तर

29

Python Enterprise Application Kit community से:

"अंडे के रूप में जार जावा के लिए कर रहे हैं अजगर कर रहे हैं ..."

अजगर अंडे एक अजगर परियोजना के साथ में अतिरिक्त जानकारी के bundling का एक तरीका है, जो प्रोजेक्ट की निर्भरताओं की जांच की जा सकती है और रनटाइम पर संतुष्ट है, साथ ही साथ अन्य परियोजनाओं के लिए परियोजनाओं को प्लगइन प्रदान करने की अनुमति देता है। कई बाइनरी प्रारूप हैं जो अंडे को जोड़ते हैं, लेकिन सबसे आम है '.gg' zipfile प्रारूप, क्योंकि यह परियोजनाओं को वितरित करने के लिए सुविधाजनक है। प्रारूप समर्थन पैकेज-विशिष्ट डेटा, प्रोजेक्ट-व्यापी मेटाडेटा, सी एक्सटेंशन, और पायथन कोड सहित प्रारूप समर्थन।

अजगर अंडे के प्राथमिक लाभ हैं:

  • वे अजगर पैकेज प्रबंधक

  • .egg फ़ाइलों को एक अजगर के लिए एक "शून्य स्थापना" प्रारूप हैं "स्थापित आसान" जैसे उपकरणों सक्षम पैकेज; कोई निर्माण या स्थापित कदम आवश्यक है, बस उन्हें PYTHONPATH या sys.path पर रख दिया और

  • वे पैकेज मेटाडाटा शामिल कर सकते हैं ( क्रम स्थापित सी एक्सटेंशन या डेटा फ़ाइलों का उपयोग किया जाता है, तो आवश्यकता हो सकती है) उन्हें इस्तेमाल, ऐसे अन्य अंडे वे

  • पर निर्भर करते हैं वे "नाम स्थान संकुल" (संकुल कि सिर्फ अन्य संकुल होते हैं) (अलग वितरण में विभाजित किया जा करने के लिए जैसे zope। अनुमति देते हैं, मुड़।, शिखर। * संकुल के रूप मेंके रूप में वितरित किया जा सकता हैअलग-अलग अंडे, सामान्य पैकेज के विपरीत जो हमेशा समान पेरेंट निर्देशिका के अंतर्गत रखा जाना चाहिए। यह अनुमति देता है क्या अब विशाल अखंड संकुल अलग घटकों के रूप में वितरित किया जाना है।)

  • वे, आवेदन या पुस्तकालयों एक पुस्तकालय की जरूरत संस्करण निर्दिष्ट करने के लिए अनुमति देते हैं ताकि आप कर सकते हैं उदा twisted.internet आयात करने से पहले ("ट्विस्ट-इंटरनेट> = 2.0") की आवश्यकता है।

  • वे एक्स्टेंसिबल आवेदन करने के लिए एक्सटेंशन या प्लग इन के वितरण के लिए एक महान प्रारूप हैं और इस तरह के Trac, जो 0 के रूप में प्लगइन्स के लिए अंडे का उपयोग करता है के रूप में चौखटे (।9 बी 1), क्योंकि अंडे रनटाइम अंडे का पता लगाने के लिए सरल एपीआई प्रदान करता है और उनकी विज्ञापित प्रविष्टि अंक (ग्रहण के "एक्सटेंशन बिंदु" अवधारणा के समान) ढूंढता है।

  • प्रारूप के मानकों के समान जावा के "जार" प्रारूप के लाभों के समान अन्य लाभ भी हो सकते हैं।

-Adam

+0

लेकिन अगर निर्भर पाइथन पैकेज में पीपीआईआई पर बाइनरी अंडे अपलोड नहीं होते हैं? – Mitar

2

.egg फ़ाइलें मूल रूप से अपने अजगर आवेदन को तैनात करने के लिए एक अच्छा तरीका है। आप जावा के लिए .jar फाइलों जैसे कुछ के बारे में सोच सकते हैं।

अधिक जानकारी here

3

अंडे पाइथन ऐप्स वितरित करने के लिए एक बहुत अच्छा तरीका है। इसे एक प्लेटफार्म स्वतंत्र .deb फ़ाइल के रूप में सोचें जो सभी निर्भरताओं और क्या नहीं स्थापित करेगा। लाभ यह है कि अंतिम उपयोगकर्ता के लिए उपयोग करना आसान है। नुकसान यह है कि आपके ऐप को एक .egg फ़ाइल के रूप में पैकेज करने के लिए बोझिल हो सकता है।

आपको .ggs के अतिरिक्त स्थापना के वैकल्पिक साधन भी प्रदान करना चाहिए। ऐसे कुछ लोग हैं जो अंडों का उपयोग करना पसंद नहीं करते हैं क्योंकि उन्हें सॉफ़्टवेयर प्रोग्राम के विचार को पसंद नहीं है जो भी सॉफ्टवेयर चाहता है। ये आमतौर पर sysadmin प्रकार होते हैं।

1

जो कुछ भी आप करते हैं, अपने आवेदन को एक टैरबॉल के रूप में वितरित करना बंद न करें, क्योंकि यह एक पैकेज sysetem के साथ ऑपरेटिंग सिस्टम के लिए सबसे आसान पैक करने योग्य प्रारूप है।

1

सरल पायथन प्रोग्राम के लिए, आपको शायद अंडे का उपयोग करने की आवश्यकता नहीं है। कच्चे .py फ़ाइलों को वितरित करना पर्याप्त होना चाहिए; यह जीएनयू/लिनक्स के लिए स्रोत फाइलों को वितरित करने जैसा है। आप विभिन्न ऑपरेटिंग सिस्टम के लिए .exe, .dmg, या अन्य फ़ाइलों को बनाने के लिए विभिन्न ओएस "पैकर्स" (जैसे py2exe या py2app) का भी उपयोग कर सकते हैं।

अधिक जटिल कार्यक्रम, उदा। Django, विभिन्न मॉड्यूल और निर्भरताओं की आवश्यकता के कारण अंडे की जरूरत है।

4

स्वयं द्वारा एक अंडा उचित स्रोत रिलीज से बेहतर नहीं है। अच्छा हिस्सा निर्भरता हैंडलिंग है। डेबियन या आरपीएम पैकेज की तरह, आप कह सकते हैं कि आप अन्य अंडों पर निर्भर हैं और वे स्वचालित रूप से इंस्टॉल हो जाएंगे (pypi.python.org के माध्यम से)।

एक दूसरी टिप्पणी: अंडा प्रारूप स्वयं एक बाइनरी पैक प्रारूप है। सामान्य पायथन पैकेज जिसमें केवल पायथन कोड होते हैं उन्हें "स्रोत रिलीज़" के रूप में सबसे अच्छा वितरित किया जाता है, इसलिए "python setup.py sdist" जिसके परिणामस्वरूप .tar.gz होता है। पीपीआई पर अपलोड होने पर इन्हें आमतौर पर "अंडे" भी कहा जाता है।

जहां आपको बाइनरी अंडे की आवश्यकता होती है: जब आप कुछ सी कोड एक्सटेंशन को बंडल करते हैं। इसके बाद आपको कई बाइनरी अंडे (32 बिट यूनिक्स वन, एक विंडोज़ इत्यादि) की आवश्यकता होगी।

+0

लेकिन क्या निर्भर है कि पाइथन पैकेज पर पापी के लिए बाइनरी अंडे अपलोड नहीं किए गए हैं? – Mitar

+0

वे आप बस-टू-ए-कंपाइलर समस्या रखते हैं। कोई जादू समाधान नहीं है: आप या तो पूर्व संकलित संकुल/अंडे हैं या नहीं। –

+0

हां, मेरे पास मेरा प्रीपेम्प्लेड पैकेज/अंडा है, लेकिन निर्भरताओं के बारे में क्या? क्या यह कहने का कोई तरीका है कि अगर पीपीपी पर अंडा उपलब्ध नहीं है, तो कृपया इस और इस भंडार का उपयोग करें? – Mitar

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