ध्यान दें कि मैं अब इस उत्तर को अपडेट नहीं कर रहा हूं। मेरे पास http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html पर मेरी व्यक्तिगत साइट पर बहुत लंबा अजगर 3 क्यू एंड ए है।
पिछला उत्तर:
(स्थिति अपडेट, सितंबर 2012)
हम (यानी पायथन कोर डेवलपर्स) ने भविष्यवाणी की थी जब पायथन 3.0 जारी किया गया था कि 2.x श्रृंखला में नई परियोजनाओं के लिए "डिफ़ॉल्ट" विकल्प बनने में 3.x के लिए लगभग 5 साल लगेंगे। यह भविष्यवाणी है कि 2.7 रिलीज के लिए नियोजित रखरखाव की अवधि इतनी लंबी क्यों है।
मूल पायथन 3.0 रिलीज़ भी खराब आईओ प्रदर्शन के साथ कुछ महत्वपूर्ण मुद्दों को लेकर निकला जो इसे सबसे व्यावहारिक उद्देश्यों के लिए प्रभावी रूप से अनुपयोगी बनाता है, इसलिए यह जून 2009 के अंत में पायथन 3.1 की रिलीज़ से समयरेखा शुरू करने के लिए अधिक समझ में आता है। (उन IO प्रदर्शन की समस्याएं भी यही कारण हैं कि कोई 3.0.z अनुरक्षण रिलीज नहीं हैं: कोई भी अच्छा कारण नहीं है कि कोई भी 3.0 के उन्नयन पर 3.1 के साथ रहना चाहता है)।
लेखन के समय (सितंबर 2012), इसका मतलब है कि वर्तमान में हम संक्रमण प्रक्रिया में 3 साल से अधिक हैं, और यह भविष्यवाणी अभी भी ट्रैक पर है।
जबकि पायथन 3 कोड टाइप करने वाले लोग सबसे अधिक नियमित रूप से print
फ़ंक्शन द्वारा होने वाले सिंटैक्टिक परिवर्तनों से काटते हैं , जो वास्तव में लाइब्रेरी पोर्टिंग के लिए कोई परेशानी नहीं है क्योंकि स्वचालित 2to3
रूपांतरण उपकरण इसे बहुत खुशी से संभालता है।
व्यवहार में सबसे बड़ी समस्या वास्तव में एक अर्थपूर्ण है: पायथन 3 आपको पाठ को तेज और ढीले खेलने की अनुमति नहीं देता है जिस तरह से पायथन 2 करता है। आप के लिए है: यह अजगर 2 पर अपनी सबसे बड़ा लाभ, लेकिन यह भी पोर्टिंग के लिए सबसे बड़ी बाधा दोनों है ठीक (जबकि 2.x में, कि कोड का एक बहुत चुपचाप साथ गलत डेटा का उत्पादन सही ढंग से काम करने के लिए एक बंदरगाह पाने के लिए अपनी समस्याओं से निपटने को यूनिकोड गैर-एएससीआईआई इनपुट, काम करने का आभास देता है, विशेष रूप से ऐसे वातावरण में जहां गैर-एएससीआईआई डेटा असामान्य है)।
यहां तक कि पायथन 3.0 और 3.1 में मानक पुस्तकालय में अभी भी यूनिकोड से संबंधित समस्याएं हैं, जिससे बहुत सारे पुस्तकालयों (विशेषकर वेब सेवाओं से संबंधित) को पोर्ट करना मुश्किल हो जाता है।
3.2 उन समस्याओं का एक बहुत कुछ संबोधित किया, जो पुस्तकालयों और Django जैसे ढांचे के लिए बहुत बेहतर लक्ष्य प्रदान करता है। 3.2 ने wsgiref
3.x के लिए पहले कार्यशील संस्करण (वेब सर्वर और पायथन में लिखे वेब एप्लिकेशन के बीच संचार के लिए उपयोग किया जाने वाला मुख्य मानक) को भी लाया , जो वेब स्पेस में अपनाने के लिए एक आवश्यक शर्त थी।
NumPy और SciPy जैसी प्रमुख निर्भरताएँ अब पोर्ट की गई हैं, स्थापना और निर्भरता प्रबंधन उपकरण जैसे zc.buildout
, pip
और virtualenv
3.x के लिए उपलब्ध हैं, पिरामिड 1.3 रिलीज़ पाइथन 3.2 का समर्थन करता है, आगामी Django 1.5 रिलीज़ में प्रायोगिक पायथन 3 समर्थन और 12.0 रिलीज़ शामिल है पायथन 3 संगत संस्करण बनाने का मार्ग प्रशस्त करने के लिए ट्विस्टेड नेटवर्किंग फ्रेमवर्क ने पायथन 2.5 का समर्थन छोड़ दिया।
पायथन 3 संगतता पुस्तकालयों और चौखटे पर प्रगति के अलावा, लोकप्रिय JIT- संकलित PyPy दुभाषिया कार्यान्वयन सक्रिय रूप से पायथन 3 समर्थन पर काम कर रहा है।
प्रवासन प्रक्रिया के प्रबंधन के लिए उपकरणों में भी उल्लेखनीय सुधार हुआ है। 2to3
CPython के भाग के रूप में प्रदान किए गए टूल के अलावा (जो अब अनुप्रयोगों के वन-टाइम रूपांतरण के लिए सबसे उपयुक्त माना जाता है, जिसे 2.x श्रृंखला के लिए समर्थन बनाए रखने की आवश्यकता नहीं है), वहाँ भी है python-modernize
, जो 2to3
लक्ष्यीकरण के लिए बुनियादी ढांचे का उपयोग करता है Python 2 और Python 3. का सामान्य (सबसे बड़ा) आम उपसमूह 3. यह उपकरण एक एकल कोड आधार बनाता है जो six
अनुकूलता पुस्तकालय की सहायता से Python 2.6+ और Python 3.2+ दोनों पर चलेगा । पायथन 3.3 रिलीज भी "शोर" के एक प्रमुख कारण को समाप्त करता है जब मौजूदा यूनिकोड जागरूक अनुप्रयोगों को माइग्रेट करता है: पायथॉन 3.3 एक बार फिर स्ट्रिंग लीटर के लिए 'यू' उपसर्ग का समर्थन करता है (यह वास्तव में नहीं करता हैपायथन 3 में कुछ भी - यह केवल उन उपयोगकर्ताओं के लिए अनजाने में बचने से बचने के लिए बहाल किया गया है जो उन उपयोगकर्ताओं के लिए कठिन हैं, जिन्होंने पायथन 2 में पहले से ही अपने पाठ और द्विआधारी शाब्दिक रूप से सही पहचान की थी)।
तो हम वास्तव में बहुत खुश हैं कि कैसे चीजें आगे बढ़ रही हैं - हमारे मूल समय सीमा पर जाने के लिए अभी भी लगभग 2 साल हैं, और बदलाव पूरे पायथन पारिस्थितिकी तंत्र के माध्यम से अच्छी तरह से बाहर निकल रहे हैं।
चूंकि बहुत सारी परियोजनाएं अपने पायथन पैकेज इंडेक्स मेटाडेटा को ठीक से क्यूरेट नहीं करती हैं, और कम सक्रिय रख-रखाव वाली कुछ परियोजनाओं को पायथन 3 समर्थन को जोड़ने के लिए त्याग दिया गया है, विशुद्ध रूप से स्वचालित PyPI स्कैनर अभी भी पायथन 3 लाइब्रेरी की स्थिति के बारे में एक नकारात्मक दृष्टिकोण देते हैं। समर्थन।
PyPI पर पायथन 3 समर्थन के स्तर पर जानकारी प्राप्त करने के लिए एक पसंदीदा विकल्प http://py3ksupport.appspot.com/ है।
यह सूची व्यक्तिगत रूप से ब्रेट तोप (एक लंबे समय के पायथन कोर डेवलपर) द्वारा गलत प्रोजेक्ट मेटाडेटा के लिए बनाई गई है, पायथन 3 समर्थन जो स्रोत नियंत्रण उपकरण में है, लेकिन आधिकारिक रिलीज में अभी तक नहीं है, और परियोजनाएं जो कांटे की तारीख तक अधिक हैं। या विकल्प जो पायथन 3 का समर्थन करते हैं। कई मामलों में, जो लाइब्रेरी अभी तक पायथन 3 पर उपलब्ध नहीं हैं, वे महत्वपूर्ण निर्भरताएं गायब कर रहे हैं और / या अन्य परियोजनाओं में पायथन 3 समर्थन की कमी उपयोगकर्ता की मांग को कम करती है (जैसे कि एक बार कोर Django फ्रेमवर्क उपलब्ध है। अजगर 3, संबंधित उपकरण जैसे दक्षिण और डीजेंगो-अजवाइन में पायथन 3 समर्थन को जोड़ने की अधिक संभावना है, और पिरामिड और Django दोनों में पायथन 3 समर्थन की उपलब्धता से यह अधिक संभावना है कि पायथन 3 समर्थन को अन्य उपकरणों जैसे कि जीईईवेंट में लागू किया जाएगा)।
Http://getpython3.com/ की साइट में पायथन 3 के लिए पुस्तकों और अन्य संसाधनों के कुछ उत्कृष्ट लिंक शामिल हैं, कुछ प्रमुख पुस्तकालयों और रूपरेखाओं की पहचान करता है जो पहले से ही पायथन 3 का समर्थन करते हैं, और यह भी कुछ जानकारी प्रदान करते हैं कि डेवलपर्स कैसे वित्तीय सहायता प्राप्त कर सकते हैं। पायथन 3 में प्रमुख परियोजनाओं को पोर्ट करने में पीएसएफ।
एक और अच्छा संसाधन एक नए प्रोजेक्ट के लिए पायथन संस्करण चुनने पर विचार करने के लिए कारकों पर समुदाय विकी पृष्ठ है: http://wiki.python.org/moin/Python2orPython3