पायथन 3 को 'पायथन' प्रोग्राम कमांड कैसे निष्पादित करें?


331

pythonकार्यक्रम आदेश निष्पादित करता अजगर 2. अजगर 3 का उपयोग क्रियान्वित किया जा सकता python3आदेश। pythonआदेश का उपयोग करके पायथन 3 को कैसे निष्पादित किया जा सकता है ?


30
बस एक चेतावनी: 2.7 के बजाय python3 को इंगित करने के लिए / usr / bin / python सिमलिंक को बदलने का प्रयास न करें। उबंटू रेपो में उपलब्ध कई कार्यक्रमों में अजगर 2.x के संगत होने के लिए / usr / bin / python की आवश्यकता होती है।
आत्मिक स्रोत

1
आह, अब मुझे वह मिला जो आपके उन्नयन के साथ था ... वास्तव में उबंटू डेवलपर्स उस पर काम कर रहे हैं: wiki.ubuntu.com/Python/3 "यह उबंटू 14.04 एलटीएस के लिए एक जारी लक्ष्य है, जिसमें डेस्कटॉप सीडी पर केवल पायथन 3 है इमेजिस।"
आत्मिक स्रोत

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

1
शीर्ष पर आत्मा के स्रोत की चेतावनी के संदर्भ में, पीईपी 394 देखें जो पायथन के निष्पादनयोग्य सह- संचालन के लिए नामकरण सम्मेलनों का मानकीकरण करता है और जिस पर पायथन प्रोग्रामर और पैकेज मेंटेनर करते हैं (और चाहिए) भरोसा करते हैं।
डेविड फ़ॉस्टर

2
@wandrearea, हाँ एक आभासी वातावरण में भी, pythonइसे अर्थ के रूप में रखा जाना चाहिए python2। मेरा मतलब था कि सिस्टम के पायथन के आसपास काम करने की कोशिश के बजाय एक एप्लिकेशन विशिष्ट पायथन संस्करण के रूप में मेरी टिप्पणी।
केविन

जवाबों:


370

एक सरल सुरक्षित तरीका एक उपनाम का उपयोग करना होगा। इस में रखें ~/.bashrcया ~/.bash_aliasesफ़ाइल:

alias python=python3

फ़ाइल में उपरोक्त जोड़ने के बाद, चलाएं source ~/.bashrcया source ~/.bash_aliases

उदाहरण के लिए:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

उपनाम को दरकिनार करने के लिए commandअंतर्निहित कमांड का उपयोग करें :

$ command python --version
Python 2.7.6

उपनाम को दरकिनार करने का एक और तरीका \कमांड से पहले उपयोग करना है ।

$ \python --version 
Python 2.7.6

वर्तमान शेल में उपनाम को अक्षम करने के लिए unaliasअंतर्निहित कमांड का उपयोग करें :

$ unalias python
$ python --version
Python 2.7.6

1
तो कोई "उन्नयन" विकल्प .. ??
गिरि

4
वास्तव में मैं 2.7 को मिटा देना चाहता हूं और इसे 3.3 के साथ बदलना चाहता हूं। अब के लिए एक बुरा विचार की तरह लगता है ..
गिरी

35
+1 3.3 के साथ काम करने में सक्षम होने के लिए 2.7 को शुद्ध करने का कोई कारण नहीं है। जैसा कि बहुत सारे सॉफ़्टवेयर अभी भी 2.7 पर निर्भर करते हैं; बस इसे आसपास रखें।
don.joey

6
@begueradj एक उपनाम एक प्रतीकात्मक लिंक से पूरी तरह से अलग है ।
रादु राईडेनू

1
सतर्कता का एक शब्द: इससे पाइथन 2.7 की अपेक्षा करने वाली अन्य लिपियाँ टूट सकती हैं।
किमीकैल

85

[जून २०१६] संक्रमण के बारे में जानकारी के लिए अनुशंसित स्थान आधिकारिक उबंटू पायथन पेज है।


से उबंटू विकि :

दोनों Ubuntu और डेबियन के लिए, हमारे पास चल रही परियोजना के लक्ष्यों को अजगर 3 डिफ़ॉल्ट, distros में प्राथमिकता दी अजगर संस्करण बनाने के लिए।

इसका क्या मतलब नहीं है:

  • /usr/bin/pythonपाइथन की ओर इशारा करेगा। 3. नहीं, ऐसा होने वाला नहीं है (जब तक कि पीईपी 394 की वकालत न करें, जो कि भविष्य के लिए संदिग्ध है)। /usr/bin/pythonऔर /usr/bin/python2पायथन 2.7 /usr/bin/python3को इंगित करेगा और नवीनतम समर्थित पायथन 3 संस्करण को इंगित करेगा।

  • पायथन 2 को आर्काइव से हटा दिया जाएगा। नहीं, ऐसा नहीं होने जा रहा है । हम उम्मीद करते हैं कि पाइथन 2.7 काफी लंबे समय तक उबंटू में समर्थित और उपलब्ध रहेगा, जिसे देखते हुए कि PEP 373 2020 तक अपस्ट्रीम बग फिक्स रखरखाव समर्थन का वादा करता है।

अन्य पैकेज निर्भरता के कारण प्रतीकात्मक लिंक को बदलने की सिफारिश नहीं की गई है, लेकिन उनके पास "पायथन 3 को डिफ़ॉल्ट बनाने के लिए चल रहे प्रोजेक्ट लक्ष्य हैं, डिस्ट्रो में पसंदीदा पायथन संस्करण"।


CLI उपयोग करते हैं, जैसे के लिए @Radu Rădeanu , मैं उपयोगकर्ता के दशक में एक उपनाम डाल सिफारिश करेंगे ~/.bashrc, .bash_aliases(सहित विभिन्न फाइलें, फ़ाइल ~/.bash_profile, कम से कम एक बार लोड किए गए हैं, संगठनात्मक उद्देश्यों के लिए ज्यादातर रहे हैं, लेकिन मंच से भिन्न हो सकते)। पायथन आभासी वातावरण भी अच्छी तरह से काम करते हैं।

अन्य उदाहरण:

alias python=python3

या

alias python='/usr/bin/python3'

लिपियों को अभी भी #!/usr/bin/env python3क्रॉस-अनुकूलता के लिए कुछ का उपयोग करना चाहिए ।

envवर्चुअल वातावरण के साथ मिश्रित उपयोग के लिए उपयोग करना अच्छा है।

नोट (@wjandrea के लिए धन्यवाद): उपनाम बैश रनटाइम का हिस्सा हैं, न कि उपयोगकर्ता पर्यावरण। इसलिए, वे शेबंग ( #!) के लिए उपलब्ध नहीं हैं । यदि आप उर्फ ​​अजगर = python3 को पसंद करते हैं, तो program.pyइस तरह से अलियास किए गए दुभाषिया को आमंत्रित करके कुछ शेबंग के बिना निष्पादित किया जा सकता है python program.py। अलियासिंग सिस्टम के लिए उपयोगी हो सकता है जैसे कि python3 के कई संस्करण जैसे 3.4 और 3.6 एक साथ।


1
यह अब पुराना हो गया है: उन्होंने Xenial में python2 को हटाने की योजना बनाई, लेकिन फिर ऐसा नहीं किया।
ऑरेंजडॉग

1
@ ऑरेंजडॉग, अपडेट के लिए धन्यवाद। हां, मैंने जिस विकी-पेज का हवाला दिया, उसे अब आउट-ऑफ-डेट के रूप में चिह्नित किया गया है, क्योंकि पिछले दो वर्षों में केवल पायथन 3 में जाने के लिए अधिक प्रगति हुई है। इस प्रगति का पालन करने वाला नया पृष्ठ आधिकारिक उबंटू पायथन पेज है
केविन

Xenial की योजनाओं के बारे में "नवीनतम" पृष्ठ भी पुराना है।
ऑरेंजडॉग

मैं यह नहीं कहूंगा कि यह "पुरानी तारीख" है, क्योंकि "इसे हाल ही में अपडेट नहीं किया गया है।" इसके बारे में पोस्ट रखने के लिए यह अभी भी वर्तमान स्थान है। हालाँकि, यहाँ टिप्पणियों में, मैं किसी भी हाल के स्रोतों की सराहना करूँगा जो किसी को भी मिल सकते हैं। मेरे उत्तर में और अधिक स्रोतों को जोड़ना, इस बारे में कि परिवर्तन को पूरा करने के लिए क्यों नहीं python, वास्तव में प्रासंगिक नहीं है जब तक कि रूपांतरण पूरा नहीं हो जाता। फिर भी, यह सिर्फ एक गैर-मुद्दा बन सकता है।
केविन

2
एलियास बाश के लिए आंतरिक हैं, पर्यावरण का हिस्सा नहीं हैं, इसलिए आपको अभी भी python3शेबंग में उपयोग करने की आवश्यकता होगी , नहीं python
वेजेंड्रिया

28

अद्यतन: यह गलत तरीका है, मैंने सीखा है, क्योंकि पायथन 2 और पायथन 3 विनिमेय नहीं हैं।

आप कमांड लाइन टूल को आजमा सकते हैं update-alternatives

$ sudo update-alternatives --config python

यदि आपको "अजगर के लिए कोई विकल्प नहीं" त्रुटि मिलती है, तो निम्नलिखित कमांड के साथ स्वयं एक विकल्प सेट करें:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

/usr/bin/python3तदनुसार अपने इच्छित अजगर संस्करण के लिए पथ बदलें ।


19
python2 और python3 विकल्प नहीं हैं। इस उद्देश्य के लिए अद्यतन-विकल्प का उपयोग न करें।
नौकरी

वे क्यों नहीं हैं? क्या आप में update-alternativesसे कोई यह बता सकता है कि अजगर के लिए उपयुक्त क्यों नहीं है? क्या यह legacy.python.org/dev/peps/pep-0394 की वजह से है ?
दिमित्री ग्रिगोरीव

11
समान कार्यक्षमताओं के लिए विकल्प अलग-अलग कार्यान्वयन हैं। python2 और python3 समान कार्यक्षमता प्रदान नहीं करते हैं।
एली

आप इस तरह से कुछ कर सकते हैं यदि आप मैन्युअल रूप से स्थापित (ppa या जो भी हो) python3 के अन्य संस्करण। sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
डेविड बॉउम

यह वही है जो मुझे 18.04.2 वीएम के लिए करने की ज़रूरत थी जो अजगर के साथ नहीं आती है। धन्यवाद
डार्क Star1

9

उबंटू, और बाकी लिनक्स डिस्ट्रोस उस मामले के लिए, अभी भी काफी हद तक कई अनुप्रयोगों और आदेशों के लिए पायथन 2.7 पर निर्भर हैं। यदि आप "अजगर" के डिफ़ॉल्ट संदर्भ को पायथन 3.x में बदलते हैं, तो पायथन कार्यों की एक संख्या जोरदार त्रुटियों को फेंकना शुरू कर देगी।

उदाहरण के लिए, उबंटू पर, एक के लिए 'पाइप' अब सही ढंग से नहीं चलेगा, जब तक कि आप सीधे फ़ाइल को संपादित नहीं करते और संदर्भ के लिए शेल्फ़ को '#! / Usr / bin / env python2.7' में बदल देते। RHEL (Red Hat Enterprise Linux) पर Red Hat, Fedora और CentOS जैसे फ्लेवर, 'यम' कमांड भी पायथन 2.7 पर निर्भर हैं।

मेरा कहना यह है कि आप कोड की एक महत्वपूर्ण मात्रा का दावा करेंगे ताकि जोरदार त्रुटियों को फेंकना शुरू किया जा सके ताकि आप टर्मिनल 3.x को संदर्भित करने के लिए टर्मिनल में 'अजगर' टाइप कर सकें।

टर्मिनल में 'python3' कमांड का उपयोग करने के साथ आप बहुत बेहतर हैं और आपकी पायथन 3.x फ़ाइलों में #! / Usr / bin / env python3 'है।


2

करना

cd ~
gedit .bash_aliases

या तो लिखो

alias python=python3

या

alias python='/usr/bin/python3'

फ़ाइल को सहेजें, टर्मिनल को बंद करें और इसे फिर से खोलें।
संपर्क


1

आप सिमलिंक कर सकते हैं /usr/bin/pythonकरने के लिए python3के साथ

sudo ln -s /usr/bin/python3 /usr/bin/python

और आप Python 2 और pip2 को निर्भरता के रूप में स्थापित होने से रोक सकते हैं

sudo apt-mark hold python python-pip

आप ऐसा क्यों नहीं करना चाहते, इसके लिए अन्य उत्तर देखें। उबंटू 18.04+ अब पायथन 2 के साथ नहीं आता है, इसलिए यह बहुत बुरा नहीं होना चाहिए।


2
"उबंटू 18.04 के बारे में अब अजगर 2 के साथ नहीं आता है, इसलिए यह बहुत बुरा नहीं होना चाहिए।" , उबंटू पर (यहां तक ​​कि ऐसे संस्करण जिनके पास पायथन 2 डिफ़ॉल्ट रूप से स्थापित नहीं है), एक निष्पादन योग्य जिसे pythonपायथन 2 माना जाता है, इसलिए यह कुछ चीजों को तोड़ सकता है।
wjandrea

* python>>/usr/bin/python
wjandrea

0
cat > /usr/local/bin/py
#!/bin/dash
python3 "$@"
<CTRL-D>

(बशर्ते आपके पास / usr / स्थानीय / बिन को लिखने की अनुमति है) इसी तरह

cat > /usr/local/bin/pyi
#!/bin/dash
python3 -i "$@"
<CTRL-D>

तब आप केवल अपने चुने हुए अजगर के लिए पाई (और # लाइनों में py का उपयोग करें) टाइप करें।


क्या सिम्बलिन का उपयोग करना सरल नहीं होगा? sudo ln -s /usr/bin/python3 /usr/local/bin/py
wjandrea

0

मुझे यह बस / usr / bin / python और / usr / bin / pip को हटाने में बहुत मददगार लगता है। यह सभी कार्यक्रमों को "python2" और "python3" कमांड पर भरोसा करने के लिए मजबूर करता है।

यद्यपि कुछ वैकल्पिक और पुराने पैकेज #!/usr/bin/pythonकाम पर निर्भर करते हैं, मैं अजीब और कभी-कभी कठिन डिबग करने के लिए जारी रखने की तुलना में उन कार्यक्रमों को पैच प्रस्तुत करना चाहता हूं।


-1

आप update-alternativesसंगतता मुद्दों के कारण अलग-अलग समय पर आवश्यक कार्यक्रमों के विभिन्न संस्करण प्रदान करने के लिए उपयोग कर सकते हैं।

यह उत्तर उदाहरण के लिए gcc / g ++ के विभिन्न संस्करणों को बनाए रखने के लिए चीजों को एक साथ सेट करने के लिए एक अच्छा उदाहरण है।

बस python2.7 और python 3.3 के साथ ऐसा ही करें


2
शुरुआती उपयोगकर्ता एक अलग स्थिति में लिंक किए गए उत्तर को आसानी से अनुकूलित करने में सक्षम नहीं हो सकते हैं। पहले के उत्तर को श्रेय देने के अलावा, पायथन के लिए आवश्यक कदम उठाना अच्छा होगा।
chaskes

यहाँ मैं कदम समाधान linuxconfig.org/…
woto

अजगर 2 और 3 वैकल्पिक नहीं हैं - यहां तक ​​कि अलग-अलग छोटे संस्करण भी नहीं हैं ( जैसे )। यह विधि आसानी से चीजों को तोड़ सकती है।
wjandrea

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