Vraag Hoe maak je 'python' programma commando voer Python 3 uit?


De python programma commando voert Python 2 uit. Python 3 kan worden uitgevoerd met behulp van de python3 opdracht. Hoe kan Python 3 worden uitgevoerd met behulp van de python opdracht?


224
2017-07-17 08:04


oorsprong


Gewoon een waarschuwing: probeer niet de / usr / bin / python-symlink te wijzigen naar python3 in plaats van 2.7. Veel programma's die beschikbaar zijn in de Ubuntu repos vereisen / usr / bin / python om compatibel te zijn met python 2.x. - soulsource
@soulsource, ja dat ben ik me bewust. dat is waarom ik vroeg is er een "upgrade" -optie beschikbaar of niet. - Giri
Ah, nu snap ik wat je bedoelde met een upgrade ... Eigenlijk werken de Ubuntu-ontwikkelaars daar aan: wiki.ubuntu.com/Python/3 "Het is een release-doel voor Ubuntu 14.04 LTS om alleen Python 3 op de desktop-CD-images te hebben." - soulsource
Nog een opmerking: iedereen die hier komt omdat ze proberen te leren Python 3 als standaard te gebruiken, kan in plaats daarvan vinden in het onderzoeken van virtuele omgevingen (bijvoorbeeld virtualenv) of containers (bijvoorbeeld LXC of Docker). - Kevin
Verwijzend naar de waarschuwing van soulsource bovenaan PEP 394 die standaardisatieconventies voor mede-bestaande Python-executables standaardiseert en waarop Python-programmeurs en pakkethouders vertrouwen (en zouden moeten) stellen. - David Foerster


antwoorden:


Een eenvoudige veilige manier zou zijn om een ​​alias te gebruiken. Plaats dit in ~/.bashrc of ~/.bash_aliases het dossier:

alias python=python3

Nadat u het bovenstaande in het bestand hebt toegevoegd, voert u de onderstaande opdracht uit:

source ~/.bash_aliases or source ~/.bashrc

Bijvoorbeeld:

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

Gebruik de. Om de alias te omzeilen command ingebouwd commando:

$ command python --version
Python 2.7.6

Een andere manier om de alias te omzeilen is om te gebruiken \ voor het commando.

$ \python --version 
Python 2.7.6

Gebruik de om de alias in de huidige shell uit te schakelen unalias ingebouwd commando:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



dus geen "upgrade" optie .. ?? - Giri
@Giri Je zei dat je dat gedaan hebt python3. Wat voor een upgrade? - Radu Rădeanu
eigenlijk wil ik 2.7 uitwissen en vervangen door 3.3. Het lijkt een slecht idee voor nu .. - Giri
+1 er is geen reden om 2.7 te verwijderen om te kunnen werken met 3.3. Omdat veel software nog steeds afhankelijk is van 2.7; houd het gewoon rondslingeren. - don.joey
@begueradj An alias is totaal anders dan een symbolische link. - Radu Rădeanu


[Juni 2016] De aanbevolen plaats voor informatie over de overgang is officieel Ubuntu Python pagina.


Van de Ubuntu-wiki:

Voor zowel Ubuntu als Debian hebben we dat gedaan voortdurende project doelen om van Python 3 de standaard Python-versie in de Distro's te maken.

Wat dit doet niet gemiddelde:

  • /usr/bin/python zal naar Python 3 wijzen. Nee, dit gaat niet gebeuren (tenzij PEP 394 pleit anders voor, wat in de nabije toekomst twijfelachtig is). /usr/bin/python en /usr/bin/python2 zal wijzen naar Python 2.7 en /usr/bin/python3 verwijst naar de nieuwste ondersteunde Python 3-versie.

  • Python 2 wordt uit het archief verwijderd. Nee, dit gaat niet gebeuren. We verwachten dat Python 2.7 nog geruime tijd ondersteund en beschikbaar zal blijven in Ubuntu, gezien het feit dat PEP 373 belooft upstream ondersteuning voor onderhoud van bugfixen tot 2020.

Het wordt niet aanbevolen om de symbolische link te veranderen vanwege andere pakketafhankelijkheden, maar ze hebben "lopende projectdoelen om van Python 3 de standaard Python-versie in de Distro's te maken".


Voor CLI-gebruik, zoals @Radu Rădeanu, Ik zou aanbevelen om een ​​alias in de gebruiker te plaatsen ~/.bashrc, .bash_aliases bestand (de verschillende bestanden, inclusief ~/.bash_profile, zijn allemaal samen geladen en zijn gewoon voor organisatorische doeleinden). Python virtuele omgevingen werken ook goed.

Zoals:

alias python=python3

of

alias python='/usr/bin/python3'

Scripts kunnen dan beginnen met iets als:

#!/usr/bin/env python

in plaats van

#!/usr/bin/python3

Ik zou nog steeds aanraden om te gebruiken #!/usr/bin/python3 (of #!/usr/bin/env python3) in scripts voor eenvoudiger cross-compatibiliteit.

Gebruik makend van env is leuk voor gemengd gebruik met virtuele omgevingen.


68
2018-06-02 16:31



Dit lijkt nu niet meer actueel: ze waren van plan om python2 in Xenial te verwijderen, maar deden dat toen niet. - OrangeDog
@ OrangeDog, bedankt voor de update. Ja, de wiki-pagina die ik heb aangehaald is nu als verouderd gemarkeerd, omdat er meer vooruitgang is geboekt in de afgelopen twee jaar om naar alleen Python 3 te gaan. De nieuwe pagina om deze progressie te volgen is de officiële Ubuntu Python-pagina. - Kevin
De "laatste" pagina is ook verouderd, met betrekking tot de plannen voor Xenial. - OrangeDog
Ik zou niet zeggen dat het zo "verouderd" is als "het is niet recentelijk bijgewerkt". Het lijkt nog steeds de huidige locatie te zijn om berichten hierover te bewaren. In de opmerkingen hier zou ik echter enige andere recente bronnen die iemand kan vinden op prijs stellen. Voeg meer bronnen toe aan mijn antwoord, over waarom niet om de wijziging in rechtvaardig te maken python, is niet echt relevant totdat de conversie is voltooid. Zelfs dan kan het gewoon een non-issue worden. - Kevin
@OrangeDog het is heel goed mogelijk om een ​​Xenial-systeem zonder Python 2 te hebben - ik heb Ubuntu Xenial Mate op Raspberry PI uitgevoerd en het had een desktop maar geen python2.7. Er zijn nog steeds enkele optionele pakketten (of programma's die nodig zijn voor desktop-ervaring) die Python 2 naar binnen halen, dus de kans is groot dat je die hebt. - Antti Haapala


Update: Dit is de verkeerde manier, heb ik geleerd, aangezien Python2 en Python3 niet uitwisselbaar zijn.

U kunt het opdrachtregelhulpprogramma proberen update-alternatives.

$ sudo update-alternatives --config python

Als u de foutmelding krijgt "geen alternatieven voor python", stel dan zelf een alternatief in met de volgende opdracht:

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

Verander het pad /usr/bin/python3 naar de door u gewenste python-versie.


8
2018-05-04 14:03



python2 en python3 zijn geen alternatieven. Gebruik hiervoor geen update-alternatieven. - jobin
Waarom zijn ze niet? Kan een van jullie uitleggen waarom update-alternatives is niet geschikt voor python? Is het vanwege legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
alternatieven zijn verschillende implementaties voor dezelfde functionaliteiten. python2 en python3 bieden niet dezelfde functionaliteiten. - Ely
Je kunt zoiets doen als je handmatig (via ppa of wat dan ook) andere versies van python3 hebt geïnstalleerd. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


Ubuntu en de rest van de Linux distro's zijn wat dat betreft nog steeds grotendeels afhankelijk van Python 2.7 voor een aantal toepassingen en opdrachten. Als je de standaardreferentie van "python" in Python 3.x verandert, dan zal een aantal Python-functies beginnen met het gooien van assertiefouten.

Op Ubuntu zou 'pip' voor een bijvoorbeeld niet langer correct werken, tenzij je het bestand direct hebt bewerkt en de shebang hebt gewijzigd in '#! / Usr / bin / env python2.7'. Op RHEL (Red Hat Enterprise Linux) -aroma's zoals Red Hat, Fedora en CentOS is de 'Yum'-opdracht ook afhankelijk van Python 2.7.

Mijn punt is hier dat je ervoor zou zorgen dat een aanzienlijke hoeveelheid code beginnen met het gooien van assertiefouten, zodat je 'python' in de terminal zou kunnen typen om te verwijzen naar Python 3.x.

Je bent veel beter af met het gebruik van de opdracht 'python3' in de terminal en de shebang '#! / Usr / bin / env python3' in je Python 3.x-bestanden.


3
2018-03-25 15:43





Do

cd ~
gedit .bash_aliases

schrijf vervolgens een van beide

alias python=python3

of

alias python='/usr/bin/python3'

Sla het bestand op, sluit de terminal en open deze opnieuw.
Link


1
2017-09-15 18:36





Je kunt gebruiken update-alternatives om verschillende versies van programma's aan te bieden die op verschillende tijdstippen nodig kunnen zijn vanwege compatibiliteitsproblemen.

Dit antwoord Is een goed voorbeeld voor het instellen van dingen voor het gelijktijdig onderhouden van verschillende versies van gcc / g ++, bijvoorbeeld.

doe gewoon hetzelfde met python2.7 en python 3.3


0
2017-10-18 13:19



Begingebruikers kunnen het gekoppelde antwoord mogelijk niet eenvoudig aanpassen aan een andere situatie. Naast het crediteren van het eerdere antwoord, zou het goed zijn om de stappen voor Python uiteen te zetten. - chaskes
Hier is de goede stap voor stap oplossing gevonden linuxconfig.org/... - woto


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

(op voorwaarde dat u schrijfrechten hebt voor / usr / local / bin) hetzelfde

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

dan typ je alleen Py (en gebruik py in #! -regels) voor de door jou gekozen python.


0
2018-01-15 22:57





U kunt symboliseren /usr/bin/python naar python3 met

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

Zie de andere antwoorden voor waarom u dit misschien niet wilt doen. Ubuntu 18.04 komt niet langer met Python 2, dus het zou niet zo slecht mogen zijn.


0
2018-05-03 21:01