अजगर उपकरण है कि पैकेज और परियोजनाओं का विवरण देने में इस्तेमाल किया जा सकता का एक भ्रामक इतिहास रहा है: इन में शामिल distutils
स्टैंडर्ड लाइब्रेरी में, distribute
, distutils2
, और setuptools
(और शायद अधिक)। ऐसा प्रतीत होता है कि distribute
और distutils2
इसके पक्ष में बंद कर दिया गया था setuptools
, जो दो प्रतिस्पर्धी मानकों को छोड़ देता है।
मेरी समझ से setuptools
कहीं अधिक विकल्प (जैसे निर्भरता, परीक्षण, आदि की घोषणा करना) प्रदान करता है distutils
, हालांकि यह पायथन मानक पुस्तकालय (अभी तक?) में शामिल नहीं है।
अजगर पैकेजिंग उपयोगकर्ता गाइड [ 1 ] अब सिफारिश की गई है:
setuptools
परियोजनाओं को परिभाषित करने और स्रोत वितरण बनाने के लिए उपयोग करें ।
और बताते हैं:
यद्यपि आप
distutils
कई परियोजनाओं के लिए शुद्ध उपयोग कर सकते हैं , लेकिन यह अन्य परियोजनाओं पर निर्भरता को परिभाषित करने का समर्थन नहीं करता है और पैकेज मेटाडाटा को सही ढंग से पॉपुलेट करने के लिए कई सुविधा उपयोगिताओं को याद कर रहा है जो इसके द्वारा प्रदान किए गए हैंsetuptools
। मानक पुस्तकालय के बाहर होने के कारण, सेटपूल भी पायथन के विभिन्न संस्करणों में एक अधिक सुसंगत विशेषता प्रदान करता है, और (इसके विपरीतdistutils
),setuptools
सभी समर्थित संस्करणों पर आगामी "मेटाडेटा 2.0" मानक प्रारूपों का उत्पादन करने के लिए अद्यतन किया जाएगा।यहां तक कि उन परियोजनाओं के लिए भी जो उपयोग करने का चयन करते हैं
distutils
, जब पाइप ऐसी परियोजनाओं को सीधे स्रोत से स्थापित करता है (बजाय एक प्रीबिल्ट व्हील फ़ाइल से स्थापित करने के लिए), यह वास्तव मेंsetuptools
इसके बजाय का उपयोग करके आपकी परियोजना का निर्माण करेगा ।
हालाँकि, विभिन्न प्रोजेक्ट की सेटअपफ़ॉर्म फ़ाइलों में देखने से पता चलता है कि यह वास्तविक मानक नहीं है। कई पैकेज अभी भी उपयोग करते हैं distutils
और जो समर्थन करते हैं वे setuptools
अक्सर एक उदाहरण के setuptools
साथ मिश्रण करते distutils
हैं एक वापसी आयात करके:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
सेटअप लिखने का एक तरीका खोजने के प्रयास के बाद, जिसे दोनों द्वारा स्थापित किया जा सकता है setuptools
और distutils
। इसमें अक्सर त्रुटि-प्रवण निर्भरता जाँच के विभिन्न तरीके शामिल होते हैं, क्योंकि distutils
सेटअप फ़ंक्शन में निर्भरता का समर्थन नहीं करता है।
लोग अभी भी समर्थन करने के लिए अतिरिक्त प्रयास क्यों कर रहे हैं distutils
- क्या तथ्य यह setuptools
है कि मानक पुस्तकालय में एकमात्र कारण नहीं है? इसके क्या फायदे हैं distutils
और क्या कोई सेटअप सेटअप फ़ाइल लिखने में कमियां हैं जो केवल समर्थन करती हैं setuptools
।
setuptools
एक बढ़ा हुआ विकल्प है, distutils
लेकिन ध्यान दें कि " अनुशंसित पाइप इंस्टॉलर सभी setup.py स्क्रिप्ट के साथ चलता है setuptools
, भले ही स्क्रिप्ट केवल आयात करता होdistutils
" ( स्रोत )
distutils
को वापस मर्ज कर दिया गया हैsetuptools
, लेकिन ऐसी विरासत ऐप हैं जिनका उपयोग करने के लिए लिखा गया थाdistutils
और सही मानकों पर माइग्रेट करने के लिए शामिल लागतें हैं।