python - सेटपूल, डिस्ट्रीब्यूट और पाइप एक दूसरे से कैसे संबंधित हैं?



pip setuptools (1)

[ २०१४-१० टीएल; डीआर: distribute डेड, pip , नए setuptools , और, बाइनरी डिस्ट्रीब्यूशन, wheels । अधिक नीचे।]

[मूल उत्तर]

Distribute है पुराने setuptools का एक कांटा था, इसलिए लगभग सभी टिप्पणियां जो डिस्ट्रिब्यूट और सेटपूल के समान रूप से लागू होती हैं। सेप्टोपूलस भी पुराने पायथन मानक पुस्तकालय पैकेज Distutils में कई छेद भरने का प्रयास था। Setuptools ने कमांड-लाइन इंटरफ़ेस, easy_install और कुछ हद तक निर्भरता प्रबंधन के माध्यम से संकुल के स्वचालित डाउनलोड जैसे कार्य जोड़े। हालाँकि, पायथन समुदाय का एक वर्ग इस राय का है कि सेटटूपल्स बहुत घुसपैठ है और इसकी कुछ विशेषताओं के लिए बहुत पीछे-पीछे जादू है।

pip सेटपूल के शीर्ष पर एक उच्च-स्तरीय इंटरफ़ेस है या वितरित करें। इसका उपयोग वे अपने कई कार्यों को करने के लिए करते हैं, लेकिन कुछ और विवादास्पद सुविधाओं से बचते हैं, जैसे ज़िप्ड अंडे। pip setuptools में भी उपलब्ध नहीं है, एक अनइंस्टॉल कमांड की तरह और आवश्यकताओं के निर्धारित सेट को परिभाषित करने की क्षमता प्रदान करता है और पैकेज का एक सेट पुन: पेश करता है। यहां एक और पूर्ण सुविधा तुलना here

क्यों इतने सारे घटक हैं (और buildout तरह अधिक हैं)? बहुत सारे कारण: समाधान उन सभी प्रमुख प्लेटफार्मों पर काम करना चाहिए जिन पर पायथन समर्थित है (यानी यूनिक्स-वाई, विंडोज, मैक ओएस एक्स), इसलिए भवन और स्थापना समस्याओं का एक जटिल सेट पेश करते हैं; कई ओपन-सोर्स प्रोजेक्ट्स की तरह, पायथन अनिवार्य रूप से ऑल-वॉलंटियर है और कई डेवलपर्स सिर्फ पैकेजिंग और इंस्टॉलेशन मुद्दों में रुचि रखने वाले सभी नहीं हैं; मानक पुस्तकालय में प्रमुख नई अप्रमाणित सुविधाओं को जोड़ने के बारे में एक स्वाभाविक रूढ़िवाद है; राय आदि में अंतर।

फिलहाल, डिस्टुटिल्स के लिए एक प्रतिस्थापन प्रदान करने के लिए एक परियोजना चल रही है और संभवतः उच्च-स्तरीय ऐड-ऑन में से कुछ के लिए। इसे पायथन 3.3 मानक पुस्तकालय में packaging पैकेज के रूप में और Distutils2 रूप में पायथन के पुराने संस्करणों के लिए ऐड-ऑन पर जारी करने की योजना है।

संक्षेप में, वर्तमान संबंध है:

pip -> [ setuptools | Distribute ] -> Distutils -> Python core
                                    |
    3rd party packages              |      included in Python
                                    |

अद्यतन (2012-07) : पायथन 3.3 के लिए कोड कटऑफ की सुविधा से पहले, यह तय किया गया था कि मानक पुस्तकालय में रिलीज के लिए packaging अभी तक तैयार नहीं थी इसलिए इसे 3.3 रिलीज से हटा दिया गया है। Distutils2 पर काम जारी रहेगा जो Distutils2 माध्यम से उपलब्ध है और पायथन 3.4 के लिए मानक पुस्तकालय में क्या शामिल किया जाएगा।

अद्यतन (2014-10): इस उत्तर को अंतिम रूप से अपडेट किए जाने के बाद से पायथन पैकेजिंग की दुनिया में और भी बदलाव हुए हैं।

  • सबसे महत्वपूर्ण बात यह है कि 2013 के मध्य के बाद से setuptools और distribute बीच दरार ठीक हो गई है और विकास गतिविधि को नए setuptools प्रोजेक्ट में मिला दिया गया हैdistribute अब हटा दिया गया है और अब बनाए नहीं रखा गया है; इसके बजाय नए setuptools उपयोग करें लेकिन इंस्टॉलर के रूप में इसके easy_install उपयोग न करें।

  • pip डी-फैक्टो और धन्य इंस्टॉलर टूल बन गया है (पायथन पैकेज के लिए अन्यथा आपके प्लेटफॉर्म के पैकेज मैनेजर द्वारा प्रदान नहीं किया गया है) या तो आभासी वातावरण ( virtualenv या pyvenv ) के pyvenv या बाहर।

  • पुराने setuptools बडिस्ट eggs बजाय, wheels पायथन पैकेज के लिए धन्य बाइनरी वितरण प्रारूप बन गए हैं।

  • पायथन 3.4 के रूप में , wheel सपोर्ट वाले pip का एक संस्करण अब आधिकारिक python.org बाइनरी इंस्टालर और सोर्स पैकेज के साथ भेज दिया गया है और यह अनुमान है कि पायथन 2.7 (2.7.9) के अगले रखरखाव रिलीज में pip को भी शामिल किया जाएगा।

  • Distutils2 और packaging अब निष्क्रिय हैं।

पायथन 3 डॉक्स और नए पायथन पैकेजिंग उपयोगकर्ता गाइड के नए वितरण पायथन मॉड्यूल अनुभाग में अधिक जानकारी।

मैं अपने आप को पायथन को "Learn Python The Hard Way" (द्वितीय संस्करण) पुस्तक के माध्यम से पढ़ा रहा हूं। व्यायाम 46 में इसने मुझे पिप, डिस्ट्रीब्यूट और कुछ अन्य पैकेजों पर पढ़ने के लिए कहा।

पाइप के लिए प्रलेखन पर्याप्त स्पष्ट था। यह मुझे पैकेजों को स्थापित / अनइंस्टॉल और अपग्रेड करने की अनुमति देता है। वितरण के लिए प्रलेखन पढ़ना, यह मूल रूप से एक ही काम करता है:

पायथन पैकेजों को आसानी से डाउनलोड, निर्माण, इंस्टॉल, अपग्रेड और अनइंस्टॉल करें

पाइप और वितरण के बीच क्या अंतर है, और वे एक दूसरे से कैसे संबंधित हैं?





distribute