मान लीजिए कि मैंने पाइथन में लिखी गई एक सामान्य उद्देश्य वाली अंतिम उपयोगकर्ता उपयोगिता विकसित की है। पहले, मेरे पास केवल एक संस्करण उपलब्ध था जो संस्करण 2.3 या उसके बाद पाइथन के लिए उपयुक्त था। यह कहना पर्याप्त था, "यदि आपको आवश्यकता है तो पाइथन डाउनलोड करें, फिर इस स्क्रिप्ट को चलाएं"। ट्रैक रखने के लिए स्रोत नियंत्रण में स्क्रिप्ट का एक संस्करण था (मैं गिट का उपयोग कर रहा हूं)।पायथन 3 विकास और वितरण चुनौतियां
पायथन 3 के साथ, यह अब आवश्यक नहीं है। निकट भविष्य के लिए, मुझे दो अलग-अलग संस्करणों को विकसित करने की आवश्यकता होगी, जो पाइथन 2.x के लिए उपयुक्त है और एक पायथन 3.x के लिए उपयुक्त है। एक विकास परिप्रेक्ष्य से, मैं कुछ विकल्पों के बारे में सोच सकता हूं:
- एक ही शाखा में दो अलग-अलग स्क्रिप्ट बनाए रखें, साथ ही साथ दोनों में सुधार करें।
- दो अलग-अलग शाखाएं बनाए रखें, और विकास की आय के रूप में आगे और सामान्य परिवर्तनों को मर्ज करें।
- स्क्रिप्ट का केवल एक संस्करण बनाए रखें, साथ ही एक पैच फ़ाइल में चेक करें जो स्क्रिप्ट को एक संस्करण से दूसरे संस्करण में परिवर्तित करता है। जब पर्याप्त परिवर्तन किए जाते हैं कि पैच अब स्पष्ट रूप से लागू नहीं होता है, तो संघर्षों को हल करें और एक नया पैच बनाएं।
मैं वर्तमान में विकल्प 3 की ओर झुक रहा हूं, क्योंकि पहले दो में बहुत से त्रुटि-प्रवण टेडियम शामिल होंगे। लेकिन विकल्प 3 गन्दा लगता है और मेरा स्रोत नियंत्रण प्रणाली मेरे लिए पैच का प्रबंधन करना चाहिए।
वितरण पैकेजिंग के लिए, अधिक विकल्पों में से चुनने के लिए कर रहे हैं:, अजगर 2 के लिए एक उपयुक्त और अजगर 3 के लिए एक उपयुक्त
- प्रस्ताव दो अलग-अलग डाउनलोड पैकेज (उपयोगकर्ता सही डाउनलोड करने के लिए पता करने के लिए होगा उनके पास पाइथन के किसी भी संस्करण के लिए एक है)।
- अंदर दो अलग-अलग स्क्रिप्ट के साथ एक डाउनलोड पैकेज ऑफ़र करें (और फिर उपयोगकर्ता को सही चलाने के लिए पता होना चाहिए)।
- दो संस्करण-विशिष्ट स्क्रिप्ट के साथ एक डाउनलोड पैकेज, और एक छोटा स्टब लोडर जो पाइथन संस्करण दोनों में चलाया जा सकता है, जो पाइथन संस्करण के लिए सही स्क्रिप्ट चलाता है।
फिर से मैं वर्तमान में यहां विकल्प 3 की तरफ झुका रहा हूं, हालांकि मैंने अभी तक इस तरह के स्टब लोडर को विकसित करने की कोशिश नहीं की है।
कोई अन्य विचार?
+1 यह आधिकारिक सिफारिश है, और यह मुझे सबसे ज्यादा समझ में आता है। –
ऐसा लगता है कि आपके द्वारा उद्धृत आधिकारिक सिफारिश की अंतिम वाक्य मेरी स्थिति पर लागू होती है। 2to3 जितना संभव हो उतना लाभ उठाने के लिए समझ में आता है, जब तक 2.x कोड पूरी तरह से बहिष्कृत नहीं किया जा सकता है। –
एकल कोडबेस चीज अब निराश नहीं है। [Django] (https://www.djangoproject.com/weblog/2012/aug/19/experimental-python-3-support) और [पिरामिड] (https://github.com/Pylons/pyramid/wiki/Python -3-पोर्टिंग) उस दृष्टिकोण को ले लो, और मुझे यकीन है कि दूसरों का समूह भी है। वास्तव में यह आजकल सबसे फैशनेबल दृष्टिकोण दिखाई देता है। – Tshepang