उबंटू 18.04 में अपग्रेड करने के बाद डिफ़ॉल्ट रूप से python3 को सुरक्षित रूप से कैसे स्विच करें


15

चूंकि python3उबंटू 18.04 में डिफ़ॉल्ट पायथन संस्करण है और python2इसे नए उबंटू 18.04 इंस्टॉलेशन पर डिफ़ॉल्ट रूप से शिप नहीं किया जाएगा, मैं python3उबंटू 18.04 (16.04 से) में अपग्रेड करने के बाद कैसे डिफ़ॉल्ट बना सकता हूं । वर्तमान में, python2इसे अपग्रेड करने के बाद अभी भी डिफ़ॉल्ट (जैसे pythonकमांड निर्देश python2आदि)। हालांकि, pythonपैकेज को शुद्ध करने से बहुत सारे पैकेजों को हटाने का परिणाम होगा जो इस पर निर्भर करते हैं, इसलिए यह यहां कोई विकल्प नहीं है।

आदर्श रूप से, मैं python2निर्भरता को जितना संभव हो उतना दूर करना चाहता हूं । हो सकता है कि अपग्रेड प्रक्रिया को इस तरह से डिजाइन किया जा सकता है कि यह सभी पैकेजों की जांच करे, चाहे वे अब भी वास्तव में python2निर्भरता पर निर्भर हों और इस तरह सभी python2निर्भरताएं एकत्र करें जिन्हें एक समान python3निर्भरता द्वारा प्रतिस्थापित किया जा सकता है (जो कि तब अपग्रेड द्वारा हल किया जाएगा)।


कृपया नए शब्दांकन की जाँच करें। पिछला कुछ स्पष्ट नहीं था कि आप क्या पूछ रहे थे। अपनी पोस्ट के शीर्षक से इसे छाँटने की कोशिश की।
जुआन एंटोनियो

@JuanAntonio के संपादन के लिए बहुत बहुत धन्यवाद। वे अधिकांश संपादन अच्छे लगते हैं। इस प्रश्न को सही दिशा में लाने के लिए बस कुछ और सुधार किए।
ज़ाज़ी

क्या यह सुरक्षित है, क्या अजगर 2 को हटाने या इसे छोड़ने का अंत है। अगर यह वहां है तो कुछ इसकी जरूरत है!
जॉर्ज उदेन

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

"python2 को हटाने का अंत क्या है" - बल्कि एक स्वच्छ प्रणाली। मेरे अजगर स्थापना जहां उन्नयन के बाद किसी भी तरह टूट गया।
ज़ाज़ी

जवाबों:


16

यह पोस्ट थोड़ी पुरानी है, लेकिन मेरा मानना ​​है कि एक बेहतर विकल्प मौजूद है: दर्ज करें update-alternatives। निम्नलिखित आपके /usr/bin/pythonडिफ़ॉल्ट को 2.7 पर सेट करेगा, लेकिन जब आप चाहते हैं तो 3.6 उपलब्ध हैं:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

यहां सर्वोच्च प्राथमिकता "स्वचालित" विकल्प के रूप में उपयोग की जाती है, /usr/bin/pythonलेकिन आप आसानी से चलाकर स्विच कर सकते हैं sudo update-alternatives --config python


1
अच्छा उत्तर। मेरे मामले में, python2.7 नोडज / एनपीएम द्वारा स्थापित किया जा रहा था और किसी भी तरह डिफ़ॉल्ट के लिए सेट किया गया था python। मैं sudo update-alternatives --remove-all pythonसभी अजगर को निकालता था, और फिर केवल वही अजगर जोड़ा, जिसका मैं उपयोग करना चाहता हूं sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10। यह जानने के लिए भी अच्छा है कि sudo update-alternatives --list pythonक्या है।
philshem

1
तुम भी करना चाहते हो सकता है sudo apt install python3-pipऔरsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
डैनियल

11

Python2 को पूरी तरह से हटाने के लिए, आपको उस python2.x-minimalपैकेज को शुद्ध करना होगा जो कि किया जाता है

sudo apt purge python2.x-minimal

अपने सिस्टम पर अजगर 2 के सटीक संस्करण के साथ एक्स की जगह। लेकिन यह देखना सुनिश्चित करें कि आपने कौन से पैकेज निकाले हैं क्योंकि आपने उन पैकेजों को ले लिया होगा जो अभी भी उन्नयन के बाद भी अजगर 2 पर निर्भर हैं, और उन पैकेजों को भी अनइंस्टॉल किया जाएगा और काम करना बंद हो जाएगा।


'डिफ़ॉल्ट' अजगर दुभाषिया के रूप में ऐसी कोई बात नहीं है क्योंकि यह सिर्फ इस बात पर निर्भर करता है कि कौन सी वास्तविक फ़ाइल /usr/bin/pythonइंगित करती है, lnइसे लिंक को अद्यतन करने के लिए अजगर का उपयोग करने के लिए इसे बदलने के लिए, उदाहरण के लिए मान लें कि आप इसे अजगर 3.6 को इंगित करना चाहते हैं।

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

वैकल्पिक रूप से, यदि आप अपने उपयोगकर्ता के लिए यह चाहते हैं, तो आप इसे अपने उपनाम के रूप में सेट कर सकते हैं .bashrc, ऐसा करने के लिए, ~/.bashrcअपनी पसंद के संपादक में खोलें और निम्नलिखित पंक्ति जोड़ें

alias python='python3.6' 

"जैसा कि आप संकुल ले सकते हैं जो अभी भी उन्नयन के बाद भी अजगर 2 पर निर्भर है" <- हाँ, और मेरा इरादा इस निर्भरता से छुटकारा पाना है क्योंकि यह वास्तव में आवश्यक नहीं है, क्योंकि Ubuntu 18.04 python2अपनी डिफ़ॉल्ट का उपयोग करके निर्भरता के बिना उन्हें चलाता है। python3निर्भरता / संकुल।
ज़ाज़ी

1
क्या यह सुरक्षित है, क्या अजगर 2 को हटाने या इसे छोड़ने का अंत है। अगर यह वहां है तो कुछ इसकी जरूरत है!
जॉर्ज उदेन

0

मेरे 16.04 /usr/bin/pythonपर सिर्फ एक लिंक है, /usr/bin/python2.7इसलिए मुझे लगता है कि आपको इस लिंक को केवल /usr/bin/python3.x(पर्याप्त रूप xसे) इंगित करने के लिए बदलना होगा ।


तुम भी बात कर सकता /usr/bin/pythonकरने के लिए /usr/bin/python3है, जो नवीनतम python3 संस्करण स्थापित करने के लिए एक कड़ी है। या सिर्फ एक उपनाम या अपने में एक समारोह ~/.bashrc। टन के विकल्प ;-)
केव इंकी

नहीं, मुझे लगता है, यह वास्तव में नहीं है कि मैं यहां क्या करना चाहता हूं। मैं python2अपने सिस्टम से छुटकारा पाना चाहता हूं (जैसा कि एक ताजा ubuntu 18.04 स्थापित करते समय डिफ़ॉल्ट मामला है, जहां python3डिफ़ॉल्ट है और python2प्रति डिफ़ॉल्ट स्थापित नहीं है)
zazi

2
@ ज़ाज़ी मैं पर्स देने की सलाह नहीं दूंगा python2। ऐसा लगता है कि कई अन्य पैकेज इसके आधार पर हैं। क्या आपको python2स्थापित रखने से कोई नुकसान है ?
केव इंकी

मुझे python2स्थापित करने में कोई असुविधा नहीं है, यदि वास्तव में आवश्यक है, लेकिन मैं स्पष्ट python3रूप से डिफ़ॉल्ट के रूप में सेट करना चाहता हूं , अर्थात, python2जितनी बार संभव हो सके हटा दें (और उबंटू 18.04 का एक साफ इंस्टॉल दर्शाता है कि यह संभव है)।
ज़ाज़ी

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