2012-08-13 8 views
22

मैं पाइथन में एक नया ओपन-सोर्स सॉफ्टवेयर शुरू कर रहा हूं, और मुझे आश्चर्य है कि मुझे पायथन 2.x या पायथन 3.x का उपयोग करना चाहिए या नहीं।नई परियोजना: पायथन 2 या पायथन 3?

इसमें भारी मात्रा में डेटा से निपटने वाले भारी जीयूआई, जटिल वैज्ञानिक एल्गोरिदम शामिल होंगे। मुझे कम से कम Numpy, Scipy, PyQT4, PyOpenGL, h5py, optionaly Matplotlib की आवश्यकता होगी। इसे अगले कुछ वर्षों में अपडेट और एक्सटेंशन के साथ 2013 में रिलीज़ किया जाना चाहिए।

इसका उपयोग उन वैज्ञानिकों द्वारा किया जाएगा जिनके पास कंप्यूटर विज्ञान की एक विस्तृत विविधता (लिनक्स, विंडोज़, मैक ...) पर पृष्ठभूमि की आवश्यकता नहीं है। कुछ मशीनें पुरानी हो सकती हैं।

यदि मैं पायथन 3.x चुनता हूं, तो मुझे डर है कि सॉफ़्टवेयर और तृतीय-पक्ष पुस्तकालय स्थापित करने के लिए अधिक जटिल हो सकते हैं, खासकर पुराने सिस्टम पर जहां पायथन 2.x पहले से स्थापित है। यह बेहतर होगा अगर पीपीएम-जैसे पैकेज (या विंडोज इंस्टालर) पाइथन और बाहरी पुस्तकालयों के लिए अधिकांश सिस्टम पर उपलब्ध थे, जैसे कि किसी को सब कुछ संकलित करने की आवश्यकता नहीं है। इसके अलावा, मुझे नहीं पता कि 3.x शाखा पर्याप्त परिपक्व है या नहीं।

यदि मैं पायथन 2.x चुनता हूं, तो मुझे निकट भविष्य में पाइथन 3.x पर सॉफ़्टवेयर पोर्ट करने की आवश्यकता हो सकती है यदि 2.x शाखा बहिष्कृत हो जाती है (कब होगा?)।

सबसे अच्छा विकल्प क्या होगा? Should I use Python 2 or Python 3 for my development activity?

यह इस सवाल का जो वास्तव में अपने विशिष्ट स्थिति और बाधाओं पर निर्भर करता है के लिए एक बहुत बड़ी व्यक्तिपरक हिस्सा है:

+3

, मुझे लगता है कि केवल PyOpenGL अभी तक पोर्ट नहीं है। Matplotlib पोर्ट किया गया है लेकिन अभी तक जारी नहीं किया गया है, हालांकि रिलीज कुछ महीनों में है। अन्य (numpy, scipy, PyQt4, h5py) सभी में पहले से ही पाइथन 3 रिलीज़ हैं। एक महीने में –

+0

और पायथन 3.3। 2013 तक पायथन 3.4 ओवन से बाहर होगा, 2.7 रखरखाव मोड में ... वैसे, खिड़कियों के लिए आपके पास गोल्के साइट में पहले से ही matplotlib बाइनरी इंस्टॉलर हैं। – joaquin

+1

मैं 2.7 के साथ शुरू करने वाले सुझावों से असहमत हूं। अपनी निर्भरताओं पर नज़र डालें और देखें कि अभी तक 3.x समर्थन का दावा नहीं है। फिर देखें कि पोर्ट को कितना प्रयास करना होगा। कर दो। समस्या हल हो गई है और हर कोई आपको प्यार करता है और आपको भविष्य में 2 से 3 तक अपने कोड को बदलने की आवश्यकता नहीं है। – gps

उत्तर

5

पायथन 3. (इस सवाल का जवाब बदल गया है!)

अजगर 2 विरासत परियोजनाओं के लिए है। नई परियोजनाओं को पायथन 3 की तरफ झुकना चाहिए।

इसका कारण यह है कि पाइथन 3 (अब 3.6) हर साल लगभग एक नई रिलीज प्राप्त कर रहा है। यह कई सालों तक भी स्थिर रहा है (दसवीं रिलीज वर्ष में है!)। इसके विपरीत, पाइथन 2 (अभी भी 2.7) पिछले कई सालों में थोड़ा बदल गया है और स्थिरता में वृद्धि जारी रहेगा।

अधिक जानकारी के लिए: https://wiki.python.org/moin/Python2orPython3/

उन निर्भरता के
15

इस विकि वास्तव में अपने प्रश्न चर्चा करता है।

IMO, हालांकि, अगर आप नहीं हो सकता यकीन कि सभी 3 पार्टी पुस्तकालयों आप Python v3.x के साथ काम करेंगे मैं पायथन 2.x के साथ चिपके रहते हैं, लेकिन कोड लिखने की कोशिश की जरूरत है अजगर 3.x के साथ के रूप में संगत होना जितना संभव हो (उदाहरण के लिए, प्रिंट() इत्यादि) ताकि यदि आपको कभी भी v3 पर माइग्रेट करना है या नहीं करना है तो आपका काम इतना चुनौतीपूर्ण नहीं होगा। और निश्चित रूप से moving from version 2 to 3 पर दस्तावेज़ और उपकरण हैं। और यह porting v2 code to v3 पर है।

यह विशेष रूप से आप नियंत्रण नहीं है जहां या अजगर के नए संस्करण को स्थापित या 3 पार्टी सॉफ्टवेयर/पुस्तकालयों की स्थापना को अनुकूलित नहीं कर सकते सिस्टम पर मामला हो जाएगा।

यह देखते हुए कि आपका सॉफ़्टवेयर विभिन्न प्रकार के सिस्टम (लिनक्स, विंडोज़, मैक ..) पर चलाया जाएगा और कई अलग-अलग उपयोगकर्ताओं द्वारा मुझे अभी भी लगता है कि v2 इन दिनों एक आम संप्रदाय है।

तो, कम ध्यान अवधि सारांश: संस्करण 2.x उपयोग लेकिन अपने कोड perpare v3.x के लिए

अंत में, यदि आप इस खोज स्ट्रिंग में "[अजगर] संस्करण 3 या 2" डाल एसओ खोज बॉक्स, आपको related posts:

+1

http://stackoverflow.com/questions/11372190/python-2-and-python-3-dual-development –

+0

प्रिंट() के बजाय प्रिंट() करना मेरे जवाब की तरह पूरी तरह से व्यर्थ है, इस तरह के रूपांतरण के रूप में एक बार आपको इसे करने की आवश्यकता होने पर आसानी से 2to3 के साथ किया जाता है। पायथन 3 के साथ संगत कोड बनाना मतलब है कि बहिष्कृत मॉड्यूल या संरचनाओं का उपयोग नहीं करना और बाइट्स बनाम यूनिकोड बनाम देशी तारों के साथ बहुत सावधान रहना। –

2

मैं लेवॉन से सहमत हूं।

उन आवश्यकताओं के साथ, मैं अभी तक python3 में शुरू होने वाले जोखिम नहीं होगा, लेकिन आप अपने कोड लेने को ध्यान में python3 के रूप में कई बदल जाता है संभव के रूप में लिखना चाहिए।

के रूप में यह तुम कुछ आयात और मानकों है कि आप संभव के रूप में भविष्य प्रूफ के रूप में अपने कोड बनाने के लिए उपयोग कर सकते हैं के साथ मदद कर सकता है इस सवाल का Writing Python 2.7 code that is as close to Python 3.x syntax as possible देखें।

इसके अलावा, यदि आप विभिन्न प्रणालियों में चल रहे हैं, तो आपको या तो एप्लिकेशन में बंडल किए गए पायथन का अपना संस्करण वितरित करना होगा, या उपयोगकर्ता की स्थापना पर भरोसा करना होगा। अधिकांश ओएस (गैर-विंडोज़), पाइथन के 2.x स्वाद के साथ आते हैं, और गैर-तकनीकी उपयोगकर्ता के लिए सिस्टम को तोड़ने की संभावना के बिना 3.x तक अपग्रेड करना मुश्किल नहीं है।