उबंटू में अभी भी पायथन 2.7 डिफ़ॉल्ट पायथन संस्करण क्यों है?


32

अजगर के आधिकारिक दस्तावेज के अनुसार, भविष्य में Python2.7 समर्थन निकट होगा।

संकेत: 1 जनवरी, 2020 को अजगर 2.7 अपने जीवन के अंत तक पहुंच जाएगा। कृपया अपने अजगर को उन्नत करें क्योंकि उस तिथि के बाद अजगर 2.7 को बनाए नहीं रखा जाएगा। पाइप का एक भविष्य संस्करण पायथन 2.7 के लिए समर्थन छोड़ देगा। पाइप में पायथन 2 समर्थन के बारे में अधिक जानकारी, https://pip.pypa.io/en/latest/development/release-process/#python-2-support पर देखी जा सकती है

उबन्टु अपने आगामी संस्करण में पाइथन 3 का डिफ़ॉल्ट रूप से उपयोग क्यों नहीं कर रहा है?

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="19.04 (Disco Dingo)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.04"
VERSION_ID="19.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=disco
UBUNTU_CODENAME=disco
$ python
Python 2.7.16 (default, Apr  6 2019, 01:42:57) 
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

2
आप python3.7 पैकेज स्थापित कर सकते हैं। समस्या यह है कि एक ubuntu \ linux टकसाल संस्करण के भीतर कभी-कभी अभी भी पुराने सॉफ्टवेयर होते हैं, इसलिए आपको नए पैकेज मैन्युअल रूप से स्थापित करने होंगे।
पहेली

8
@enigma यह उस प्रश्न का डुप्लिकेट नहीं है क्योंकि python3 पहले से ही डिफ़ॉल्ट रूप से ma ナ not ン s by सिस्टम पर स्थापित है, इसलिए उसके पास अजगर और python3 दोनों एक दूसरे के साथ स्थापित हैं।
कारेल

जवाबों:


40

बायोनिक बीवर के रिलीज नोट्स के अनुसार :

पायथन 2 अब डिफ़ॉल्ट रूप से स्थापित नहीं है। पायथन 3 को 3.6 पर अपडेट किया गया है। यह Python 2 को मुख्य रूप से शामिल करने के लिए अंतिम LTS रिलीज़ है।

और उपरोक्त कथन सत्य है। पायथन 2 को 18.04 में डिफ़ॉल्ट रूप से स्थापित नहीं किया गया है और उसके बाद जारी किए गए संस्करण। उबंटू पहले से ही पायथन 2 से पायथन 3 तक लगभग अपनी सभी परियोजनाओं को स्थानांतरित कर चुका है। उदाहरण के लिए, डिस्को डिंगो के रिलीज नोट्स के अनुसार :

सांबा को 4.10.x संस्करण में अपडेट किया गया था, और यहां बड़े बदलावों में से एक पायथन 3 सपोर्ट है। डिस्को में, सांबा और इसकी निर्भरताएं सभी python3 हैं केवल अब, tdb के अपवाद के साथ। tdb अभी भी एक python2 पैकेज बनाता है, जिसका नाम python-tdb है, लेकिन बाकी सभी, जिसमें सांबा भी शामिल है, केवल python3 हैं।

इसके अलावा, Ubuntu 18.04 की रिलीज से पहले ही, Ubuntu / Canonical ने डेवलपर्स को पायथन 3 में जाने के लिए कहना शुरू कर दिया क्योंकि अंत निकट है । से अजगर - उबंटू विकी :

सभी उबंटू / कैनोनिकल संचालित विकास को अभी पायथन 3 को लक्षित किया जाना चाहिए, और सभी नए कोड केवल पायथन 3 को होना चाहिए। यदि आप अपनी निर्भरता के कारण ऐसा नहीं कर सकते हैं, तो आइए बात करते हैं।

ऐसा लगता है कि आपके सिस्टम पर Python 2 जानबूझकर स्थापित किया गया था या किसी अन्य पैकेज की निर्भरता के रूप में हो सकता है, जिसका डेवलपर Python 3 में नहीं गया है। आप उन पैकेजों की जांच कर सकते हैं, जिन्हें चलाकर Python 2 पर निर्भर हैं,

apt rdepends python

PEP 394python के ऐतिहासिक बिंदु में से एक में निहित होने के कारण पायथन 2 को क्यों लागू किया गया है - यूनिक्स जैसे सिस्टम पर "अजगर" कमांड :

pythonआदेश हमेशा लागू करना चाहिए अजगर 2 (जब अजगर 2 कोड अजगर 3 पर चलाया जाता है मुश्किल से निदान त्रुटियों को रोकने के लिए)।


12
अंतिम बिंदु को स्पष्ट करने के लिए, Python 3 Python 2 के साथ पीछे की ओर संगत नहीं है। यह, और इस तथ्य के साथ संयुक्त है कि Python 2 में Python 3 की तुलना में अधिक पुस्तकालय समर्थन है, इसका मतलब है कि बड़ी संख्या में डेवलपर्स अभी भी Python 2 से प्रत्यक्ष निर्भरता रखते हैं। पायथन 3 अब थोड़ी देर के लिए बाहर हो गया है, लेकिन वास्तव में यह पुस्तकालयों है यही कारण है कि पायथन 2 अभी भी इतनी दृढ़ता से उपयोग किया जाता है, भले ही इसे अब भी समर्थन नहीं किया जाना चाहिए (यदि मैं सही ढंग से याद कर रहा हूं, तो आधिकारिक समर्थन समाप्त हो गया 2018)। संपादित करें: आधिकारिक समर्थन समाप्त होता है में 2020
searchengine27

8
"... तथ्य यह है कि पायथन 2 में पायथन 3 की तुलना में अधिक पुस्तकालय समर्थन है ..." - क्या आपके पास इसके लिए एक स्रोत है? मैं शायद ही कभी पुस्तकालयों का सामना करता हूं जो पायथन 3 का समर्थन नहीं करते हैं, और वास्तव में कुछ पायथन 2 के लिए समर्थन छोड़ रहे हैं! (उदाहरण के लिए, Django, जो एक लोकप्रिय पायथन वेब फ्रेमवर्क है, ने तीन रिलीज के लिए पायथन 2 का समर्थन नहीं किया है ।) आपके बयान ने पांच साल पहले समझ में आया था, लेकिन आज मुझे नहीं लगता कि आप उस व्यापक सामान्यीकरण को आँकड़ों के साथ समर्थन किए बिना बना सकते हैं। ।
मार्सेल

7
@ searchengine27 मुझे नहीं लगता कि पुस्तकालय इसमें कारकों का समर्थन करते हैं। बैकवर्ड संगतता चिंता यह है कि दुनिया यादृच्छिक लिपियों के साथ जागृत होती है #!/usr/bin/pythonजो इसके साथ या समकक्ष शुरू होती है , जो यदि pythonबन गई तो टूट जाएगी python3, जबकि यादृच्छिक स्क्रिप्ट जो पायथन 3 पर निर्भर करती हैं, उनके साथ शुरू होने की अधिक संभावना है #!/usr/bin/python3
जेम्स_पिक

1
@ searchengine27 बहुत समय पहले किसी ने "शेम की दीवार" वेबसाइट बनाई थी जो सबसे आम निर्भरता और उनके python3 स्थिति (जो उस समय abysmal थी) को सूचीबद्ध करती थी। हालाँकि अब यह वर्ष हो गया है कि इसे बदलकर Python 3 Wall of Superpowers कर दिया गया है क्योंकि व्यावहारिक रूप से सभी सामान्य निर्भरताएँ माइग्रेट हो चुकी हैं और जो कुछ माइग्रेट नहीं कर रहे थे वे वैसे भी मर चुके हैं (मूल रूप से अप्रैल 2018 से अप्रैल 2018 से वेबसाइट अपडेट नहीं हुई है) python3- सक्षम है)।
जियाकोमो अल्जेटा

4
बस एक अतिरिक्त के रूप: तथ्य यह है कि अजगर सॉफ्टवेयर फाउंडेशन 2020 में अजगर 2 को बनाए रखने के बंद हो जाएगा मतलब यह नहीं है कि विहित 2020 वास्तव में में अजगर 2 को बनाए रखने के बंद हो जाएगा, पूरे मुद्दे एक लिनक्स का उपयोग करने का वितरण एक सम्मानित विक्रेता से वह यह है कि सभी वितरण में पैकेज (डेबियन / उबंटू के लिए जिसका अर्थ है कि "मुख्य" भंडार) मूल अपस्ट्रीम पैकेज की समर्थन स्थिति की परवाह किए बिना वितरण रिलीज के पूरे जीवनकाल के लिए बनाए रखा जाएगा । दूसरे शब्दों में, उबंटू 19.04 में पायथन 2 पैकेज उबंटू 19.04 के रूप में लंबे समय तक बनाए रखा जाएगा।
जॉर्ज डब्ल्यू मित्तग

0

मेरी जानकारी के लिए, केवल आर्क लिनेक्स ने ऐसा किया था: python3डिफ़ॉल्ट pythonकमांड से कॉल करने के लिए । पीईपी 394 सिफारिश के बावजूद ।

इसके /usr/binबीच के लिंक को फिर से परिभाषित करके python, pythonXऔर इसे बदला जा सकता है pythonX.Y। लेकिन बहुत सारे कीड़े से निपटने के लिए तैयार रहें, क्योंकि आपकी सभी python2 लिपियों में एक स्पष्ट शेल धमाका होना अनिवार्य है:

#!/usr/bin/env python2

एक शेल बैंग जो पुरानी लिपियों में शायद ही कभी इस्तेमाल किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.