पायथन अंडा क्या है?


531

मैं अजगर के लिए नया हूं और यह समझने की कोशिश कर रहा हूं कि इसके पैकेज कैसे काम करते हैं। संभवतः "अंडे" कुछ प्रकार के पैकेजिंग तंत्र हैं, लेकिन वे क्या भूमिका निभाते हैं इसका त्वरित अवलोकन होगा और वे उपयोगी क्यों हैं और उन्हें कैसे बनाया जाए, इस बारे में कुछ जानकारी हो सकती है?

जवाबों:


527

नोट: अंडे की पैकेजिंग को व्हील पैकेजिंग द्वारा अलग कर दिया गया है।

.jarजावा में एक फाइल के रूप में एक ही अवधारणा , यह .zipकुछ मेटाडेटा फ़ाइलों के साथ एक फ़ाइल है .egg, कोड को बंडलों के रूप में वितरित करने के लिए।

विशेष रूप से: पायथन अंडे की आंतरिक संरचना

एक "पायथन एग" एक तार्किक संरचना है, जो पायथन प्रोजेक्ट के एक विशिष्ट संस्करण की रिलीज़ को मूर्त रूप देता है, जिसमें इसके कोड, संसाधन और मेटाडेटा शामिल हैं। ऐसे कई प्रारूप हैं जिनका उपयोग शारीरिक रूप से पायथन अंडे को एनकोड करने के लिए किया जा सकता है, और अन्य विकसित किए जा सकते हैं। हालांकि, पायथन अंडे का एक प्रमुख सिद्धांत यह है कि उन्हें खोज योग्य और आयात योग्य होना चाहिए। यही है, पायथन एप्लिकेशन के लिए यह आसानी से और कुशलता से पता लगाना चाहिए कि एक सिस्टम पर अंडे क्या मौजूद हैं, और यह सुनिश्चित करने के लिए कि वांछित अंडों की सामग्री आयात योग्य है।

.eggप्रारूप वितरण और आसान स्थापना रद्द करने या कोड का उन्नयन करने के लिए अच्छी तरह से अनुकूल है, क्योंकि परियोजना अनिवार्य रूप से आत्म निहित एक ही निर्देशिका या फ़ाइल के भीतर, किसी भी अन्य परियोजनाओं 'कोड या संसाधनों के साथ unmingled है। यह एक परियोजना के कई संस्करणों को एक साथ स्थापित करने के लिए भी संभव बनाता है, जैसे कि व्यक्तिगत प्रोग्राम उन संस्करणों का चयन कर सकते हैं जो वे उपयोग करना चाहते हैं।


82

.eggफ़ाइल अजगर पैकेज के लिए एक वितरण प्रारूप है। यह स्रोत कोड वितरण या विंडोज के लिए सिर्फ एक विकल्प हैexe । लेकिन ध्यान दें कि शुद्ध के लिए Python, .eggफ़ाइल पूरी तरह से क्रॉस-प्लेटफ़ॉर्म है।

.eggफ़ाइल स्वयं अनिवार्य रूप से एक है.zip फ़ाइल। यदि आप एक्सटेंशन को " zip" में बदलते हैं , तो आप देख सकते हैं कि इसमें संग्रह के अंदर फ़ोल्डर्स होंगे।

इसके अलावा, यदि आपके पास ए .egg फ़ाइल है, तो आप इसे एक पैकेज के रूप में उपयोग करके स्थापित कर सकते हैंeasy_install

उदाहरण: .eggएक निर्देशिका के लिए एक फ़ाइल बनाने के लिए mymathजो अपने आप में कई अजगर स्क्रिप्ट हो सकती है, निम्न चरण करें:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

फिर, टर्मिनल से करें:

 $ python setup.py bdist_egg

यह बहुत सारे आउटपुट उत्पन्न करेगा, लेकिन जब यह पूरा हो जाएगा तो आप देखेंगे कि आपके पास तीन नए फ़ोल्डर हैं: बिल्ड , डिस्ट , और मायमैथ.ईग-इंफो । एकमात्र फ़ोल्डर जिसके बारे में हम ध्यान रखते हैं वह वह डिस्टर्ब फोल्डर है जहाँ आप अपनी डिफॉल्ट पायथन (इंस्टालेशन) संस्करण संख्या के साथ अपनी .eggफाइल पाएंगे mymath-0.1-py3.5.egg। (मेरा यहाँ: 3.5)

स्रोत: पायथन लाइब्रेरी ब्लॉग


3

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

पायथन अंडे को स्थापित करने और उपयोग करने का सबसे आसान तरीका "आसान इंस्टॉल" पायथन पैकेज प्रबंधक का उपयोग करना है, जो आपके लिए अंडे डाउनलोड, निर्माण, और स्थापित करेगा; आप सभी इसे पायथन परियोजना के नाम (और वैकल्पिक रूप से, संस्करण) को बताएंगे जिसे आप उपयोग करना चाहते हैं।

पायथन अंडे को पायथन 2.3 और ऊपर के साथ इस्तेमाल किया जा सकता है, और इसे सेटप्टूलस पैकेज (स्रोत कोड के लिए पायथन सबवर्सन सैंडबॉक्स या वर्तमान इंस्टॉलेशन निर्देशों के लिए इज़ी इनस्टॉल पेज देखें) का उपयोग करके बनाया जा सकता है।

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

  • वे "ईजी इनस्टॉल" पायथन पैकेज मैनेजर जैसे टूल को सक्षम करते हैं

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

  • वे पैकेज मेटाडेटा को शामिल कर सकते हैं, जैसे कि अन्य अंडे जो वे पर निर्भर करते हैं

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

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

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

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


अजगर अंडा एक संस्करण विशिष्ट है? यानी अंडा 2 बनाम 3 के लिए बनाया गया है? या मामूली संस्करण भी? उदा। 2.x
ईगलन

1

"अंडा" पायथन-संबंधित परियोजनाओं के लिए एक एकल-फ़ाइल आयात योग्य वितरण प्रारूप है।

"द क्विक गाइड टू पाइथन एग्स" नोट करता है कि "एग पियर्स टू एज़ जार्स टू जर्स टू जावा ..."

अंडे वास्तव में जार से अधिक अमीर हैं; वे दिलचस्प मेटाडेटा रखते हैं जैसे लाइसेंसिंग विवरण, रिलीज़ निर्भरता आदि।


लिंक आज तक मृत है।
परफैक्टी

@Perfi लिंक मेरे लिए काम करता है।
क्लीक

मजेदार है कि यह कभी-कभी कैसे काम करता है! यह ऑनलाइन वापस आ गया है। यह देखकर खुशी हुई :)
इत्र at
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.