python - वितरण, distutils, setuptools और distutils2 के बीच मतभेद?




packaging distribute (5)

2014 के आखिर में इस सवाल को अद्यतन करते हुए सौभाग्य से पाइथन पैकेजिंग अराजकता को कंटिन्यूम के " conda " पैकेज मैनेजर द्वारा साफ कर दिया गया है।

विशेष रूप से, कोंडा जल्दी कोंडा " environments " के निर्माण को सक्षम बनाता है। आप पाइथन के विभिन्न संस्करणों के साथ अपने वातावरण को कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए:

conda create -n py34 python=3.4 anaconda

conda create -n py26 python=2.6 anaconda

पाइथन के विभिन्न संस्करणों के साथ दो ("py34" या "py26") पायथन वातावरण बनाएगा।

इसके बाद आप पाइथन के विशिष्ट संस्करण के साथ पर्यावरण को आविष्कार कर सकते हैं:

source activate <env name>

यह सुविधा आपके मामले में विशेष रूप से उपयोगी प्रतीत होती है जहां आपको पायथन के विभिन्न संस्करणों से निपटना होगा।

इसके अलावा, कोंडा में निम्नलिखित विशेषताएं हैं:

  • पायथन अज्ञेयवादी
  • क्रॉस प्लेटफार्म
  • कोई व्यवस्थापक विशेषाधिकार आवश्यक नहीं है
  • स्मार्ट निर्भरता प्रबंधन (एसएटी सॉल्वर के माध्यम से)
  • सी, फोरट्रान और सिस्टम स्तरीय पुस्तकालयों के साथ अच्छी तरह से सौदे करता है जिन्हें आपको लिंक करना पड़ सकता है

यदि आप वैज्ञानिक कंप्यूटिंग क्षेत्र में हैं तो वह अंतिम बिंदु विशेष रूप से महत्वपूर्ण है।

स्थिति

मैं पाइथन 3 के लिए एक ओपन-सोर्स लाइब्रेरी पोर्ट करने की कोशिश कर रहा हूं। ( SymPy , अगर कोई सोच रहा है।)

इसलिए, मुझे पाइथन 3 के निर्माण के 2to3 स्वचालित रूप से 2to3 चलाने की आवश्यकता है। ऐसा करने के लिए, मुझे distribute का उपयोग करने की आवश्यकता है। इसलिए, मुझे वर्तमान प्रणाली को बंद करने की आवश्यकता है, जो (सबसे अच्छे के अनुसार) distutils


समस्या

दुर्भाग्यवश, मुझे यकीन नहीं है कि इन distutils बीच क्या अंतर setuptools , distribute , setuptools । प्रलेखन सबसे अच्छा स्केची है, क्योंकि वे सभी एक दूसरे के कांटेदार प्रतीत होते हैं, जिसका उद्देश्य ज्यादातर परिस्थितियों में संगत होना है (लेकिन वास्तव में, सभी नहीं) ... और इसी तरह, और बहुत आगे।


प्रश्न

क्या कोई मतभेदों को समझा सकता है? मुझे क्या उपयोग करना चाहिए? सबसे आधुनिक समाधान क्या है? (एक तरफ के रूप में, मैं Distribute करने के लिए पोर्टिंग पर कुछ गाइड की भी सराहना करता हूं, लेकिन यह सवाल के दायरे से बाहर है ...)


इस मुद्दे पर स्पष्ट समुदाय मार्गदर्शन की कमी के बारे में कई लोगों ने यहां शिकायत की।

वर्तमान में यह टूल अनुशंसाओं पर सबसे अच्छा आधिकारिक स्रोत जैसा दिखता है: https://packaging.python.org/en/latest/current.html#tool-recommendations


नोट: उत्तर बहिष्कृत, अब अप्रचलित वितरित करें।

हाँ, आपको मिल गया। : -मुझे लगता है कि इस समय पसंदीदा पैकेज Distribute , जो setuptools का एक कांटा है, जो distutils (मूल पैकेजिंग सिस्टम) का एक विस्तार है। Setuptools को बनाए रखा नहीं जा रहा था इसलिए फोर्क और नाम बदल दिया गया था, हालांकि स्थापित होने पर यह setuptools के पैकेज नाम का उपयोग करता है! मुझे लगता है कि अधिकांश पायथन डेवलपर्स अब वितरण का उपयोग करते हैं, और मैं निश्चित रूप से कह सकता हूं कि मैं करता हूं।


मुझे एहसास है कि मैंने आपकी मूल समस्या में निर्विवाद मान्यताओं को संबोधित किए बिना आपके माध्यमिक प्रश्न का उत्तर दिया है:

मैं पायथन 3 के लिए एक ओपन-सोर्स लाइब्रेरी (SymPy, अगर कोई सोच रहा है) पोर्ट करने की कोशिश कर रहा हूं। ऐसा करने के लिए, मुझे पाइथन 3 के निर्माण के दौरान स्वचालित रूप से 2to3 चलाने की आवश्यकता है।

आपको आवश्यकता नहीं हो सकती है । अन्य रणनीतियों का वर्णन http://docs.python.org/dev/howto/pyporting पर किया गया है

ऐसा करने के लिए, मुझे वितरण का उपयोग करने की आवश्यकता है,

आप कर सकते हैं :) distutils कोड के लिए बिल्ड-टाइम 2to3 रूपांतरण का समर्थन करता है (डॉकस्ट्रिंग नहीं), वितरित करने के एक अलग तरीके से: http://docs.python.org/dev/howto/pyporting#during-installation


यह विषय अभी भी प्रवाह में प्रतीत होता है। 10-31-2013 तक "पायथन पैकेजिंग उपयोगकर्ता मार्गदर्शिका" त्वरित सिफारिशें परिभाषित करती हैं "वर्तमान में कौन सा टूलसेट अनुशंसित है"। यह " पायथन पैकेजिंग का भविष्य " से भी जुड़ा हुआ है





distribute