मार्च 2020 तक, इस प्रश्न के अधिकांश अन्य उत्तर कई वर्ष पुराने हैं। जब आप पाइथन पैकेजिंग के मुद्दों पर सलाह देते हैं, तो प्रकाशन की तारीख को देखना याद रखें, और पुरानी जानकारी पर भरोसा न करें।
अजगर पैकेजिंग उपयोगकर्ता गाइड पढ़ने लायक है। प्रत्येक पृष्ठ में एक "अंतिम अद्यतन" तिथि प्रदर्शित होती है, इसलिए आप मैनुअल की पुनरावृत्ति की जांच कर सकते हैं, और यह काफी व्यापक है। तथ्य यह है कि यह पायथन सॉफ्टवेयर फाउंडेशन के python.org के एक उपडोमेन पर होस्ट किया गया है, बस इसमें विश्वास जोड़ता है। परियोजना सारांश पृष्ठ यहाँ विशेष रूप से प्रासंगिक है।
उपकरणों का सारांश:
यहाँ पायथन पैकेजिंग परिदृश्य का सारांश दिया गया है:
समर्थित उपकरण:
distutils
अभी भी पायथन में पैकेजिंग का मानक उपकरण है। यह मानक पुस्तकालय (पायथन 2 और पायथन 3) में शामिल है। यह साधारण पायथन वितरण के लिए उपयोगी है, लेकिन इसमें सुविधाओं की कमी है। यह distutils
पायथन पैकेज का परिचय देता है जिसे आपकी setup.py
स्क्रिप्ट में आयात किया जा सकता है ।
setuptools
डिस्टुटिल्स की सीमाओं को दूर करने के लिए विकसित किया गया था, और मानक पुस्तकालय में शामिल नहीं है। इसने कमांड-लाइन यूटिलिटी की शुरुआत की easy_install
। इसने setuptools
पायथन पैकेज को भी पेश किया, जिसे आपकी setup.py
स्क्रिप्ट में आयात किया जा सकता है , और pkg_resources
पायथन पैकेज जिसे वितरण के साथ स्थापित डेटा फ़ाइलों का पता लगाने के लिए आपके कोड में आयात किया जा सकता है। इसके गोचरों में से एक यह है कि यह distutils
अजगर पैकेज को बंदर करता है। इसके साथ अच्छा काम करना चाहिए pip
। यह नियमित रिलीज देखता है।
scikit-build
एक बेहतर बिल्ड सिस्टम जनरेटर है जो संकलित पायथन एक्सटेंशन के निर्माण के लिए आंतरिक रूप से CMake का उपयोग करता है। क्योंकि scikit-build distutils पर आधारित नहीं है, इसकी वास्तव में इसकी कोई सीमा नहीं है। जब निंजा-बिल्ड मौजूद है, तो स्किट-बिल्ड विकल्पों की तुलना में तीन गुना अधिक तेजी से बड़ी परियोजनाओं को संकलित कर सकता है। इसके साथ अच्छा काम करना चाहिए pip
।
distlib
एक पुस्तकालय है जो कार्यक्षमता प्रदान करता है जिसका उपयोग उच्च स्तर के टूल द्वारा किया जाता है pip
।
packaging
एक पुस्तकालय भी है जो उच्च स्तर के औजारों द्वारा उपयोग की जाने वाली कार्यक्षमता प्रदान करता है जैसे pip
औरsetuptools
पदावनत / छोड़े गए उपकरण:
distribute
का कांटा था setuptools
। यह समान नाम स्थान साझा करता है, इसलिए यदि आपके पास वितरित वितरित है, import setuptools
तो वास्तव में वितरित के साथ वितरित पैकेज आयात करेगा। डिस्ट्रीब्यूट को वापस सेटप्टूलस 0.7 में मर्ज कर दिया गया था , इसलिए आपको डिस्ट्रिब्यूट का उपयोग करने की आवश्यकता नहीं है। वास्तव में, Pypi पर संस्करण बस एक संगतता परत है जो Setuptools स्थापित करता है।
distutils2
सबसे अच्छा लेने का प्रयास था distutils
, setuptools
और distribute
पायथन के मानक पुस्तकालय में शामिल मानक उपकरण बन गया। यह विचार था कि distutils2
पुराने पायथन संस्करणों के लिए वितरित किया जाएगा, और distutils2
इसका नाम बदलकर packaging
अजगर 3.3 के लिए रखा जाएगा , जो इसे अपने मानक पुस्तकालय में शामिल करेगा। ये योजनाएँ वैसे नहीं चलीं, जैसा कि, और वर्तमान में, distutils2
एक परित्यक्त परियोजना है । नवीनतम रिलीज़ मार्च 2012 में हुई थी, और इसके Pypi होम पेज को अंततः अपनी मृत्यु को दर्शाने के लिए अपडेट किया गया है।
अन्य:
अन्य उपकरण हैं, यदि आप रुचि रखते हैं, तो पायथन पैकेजिंग उपयोगकर्ता गाइड में प्रोजेक्ट सारांश पढ़ें । मैं उन सभी की सूची नहीं होगा, तो उस पृष्ठ को दोहराना नहीं करने के लिए, और जवाब सवाल है, जो था ही के बारे में मिलान रखने के लिए distribute
, distutils
, setuptools
और distutils2
।
सिफ़ारिश करना:
यदि यह सब आपके लिए नया है, और आप नहीं जानते कि कहां से शुरू करें, तो मैं सीखने की सलाह दूंगाsetuptools
, साथ में pip
और virtualenv
, जो सभी मिलकर बहुत अच्छा काम करते हैं।
आप में देख रहे हैं virtualenv
, तो आप इस सवाल में रुचि हो सकती: बीच क्या अंतर है venv
, pyvenv
, pyenv
, virtualenv
, virtualenvwrapper
, आदि? । (हां, मुझे पता है, मैं तुम्हारे साथ कराहता हूं।)