Frage Wie mache ich 'Python' Programmbefehl ausführen Python 3?


Das python Der Programmbefehl führt Python 2 aus. Python 3 kann mit dem Befehl ausgeführt werden python3 Befehl. Wie kann Python 3 mit Hilfe des python Befehl?


224
2017-07-17 08:04


Ursprung


Nur eine Warnung: Versuchen Sie nicht, den / usr / bin / python-Symlink so zu ändern, dass er auf python3 statt auf 2.7 verweist. Viele Programme, die in den Ubuntu-Repos verfügbar sind, benötigen / usr / bin / python, um mit Python 2.x kompatibel zu sein. - soulsource
@soulsource, ja ich bin mir dessen bewusst. Deshalb habe ich gefragt, ob es eine "Upgrade" -Option gibt oder nicht. - Giri
Ah, jetzt habe ich verstanden, was du mit Upgrade meintest ... Eigentlich arbeiten die Ubuntu-Entwickler daran: wiki.ubuntu.com/Python/3 "Es ist ein Releaseziel für Ubuntu 14.04 LTS, nur Python 3 auf den Desktop-CD-Images zu haben." - soulsource
Mit anderen Worten, jeder, der hierher kommt, weil er versucht, Python 3 zu seinem Standard zu machen, könnte stattdessen bei der Suche nach virtuellen Umgebungen (z. B. virtualenv) oder Containern (z. B. LXC oder Docker) Verwendung finden. - Kevin
In Bezug auf die Warnung von soulsource an der Spitze siehe PEP 394 Dies standardisiert die Namenskonventionen für koexistierende Python-Programme und auf die sich Python-Programmierer und Paketbetreuer verlassen (und sollten). - David Foerster


Antworten:


Ein einfacher sicherer Weg wäre die Verwendung eines Alias. Legen Sie diese in ~/.bashrc oder ~/.bash_aliases Datei:

alias python=python3

Führen Sie den folgenden Befehl aus, nachdem Sie den obigen Befehl in der Datei hinzugefügt haben:

source ~/.bash_aliases or source ~/.bashrc

Beispielsweise:

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

Um den Alias ​​zu umgehen, verwenden Sie die command eingebauter Befehl:

$ command python --version
Python 2.7.6

Eine andere Möglichkeit, den Alias ​​zu umgehen, ist die Verwendung \ vor dem Befehl.

$ \python --version 
Python 2.7.6

Um den Alias ​​in der aktuellen Shell zu deaktivieren, verwenden Sie die unalias eingebauter Befehl:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



also keine "upgrade" option .. ?? - Giri
@Giri Du hast gesagt, dass du es getan hast python3. Was für ein Upgrade? - Radu Rădeanu
eigentlich möchte ich 2,7 löschen und durch 3,3 ersetzen. Scheint wie es ist eine schlechte Idee für jetzt .. - Giri
+1 Es gibt keinen Grund, 2.7 zu löschen, um mit 3.3 arbeiten zu können. Da viele Software immer noch auf 2.7 angewiesen ist; halte es einfach herum. - don.joey
@ Begueradj An alias ist völlig anders als a symbolischer Link. - Radu Rădeanu


[Juni 2016] Der empfohlene Ort für Informationen zum Übergang ist offiziell Ubuntu Python Seite.


Von dem Ubuntu Wiki:

Sowohl für Ubuntu als auch für Debian haben wir laufend Projekt Tore um Python 3 zur bevorzugten Python-Standardversion in den Distributionen zu machen.

Was ist das nicht bedeuten:

  • /usr/bin/python wird auf Python 3 zeigen. Nein, das wird nicht passieren (es sei denn PEP 394 befürwortet anders, was für die absehbare Zukunft zweifelhaft ist). /usr/bin/python und /usr/bin/python2 wird auf Python 2.7 und zeigen /usr/bin/python3 zeigt auf die neueste unterstützte Python 3-Version.

  • Python 2 wird aus dem Archiv entfernt. Nein, das wird nicht passieren. Wir erwarten, dass Python 2.7 lange Zeit unter Ubuntu unterstützt und verfügbar bleibt PEP 373 verspricht Upstream-Bugfix-Wartungsunterstützung bis 2020

Es wird nicht empfohlen, die symbolische Verknüpfung wegen anderer Paketabhängigkeiten zu ändern, aber sie haben "laufende Projektziele, um Python 3 zur bevorzugten Python-Standardversion in den Distributionen zu machen".


Für CLI verwenden, wie @Radu RădeanuIch würde empfehlen, einen Alias ​​im Benutzer zu setzen ~/.bashrc, .bash_aliases Datei (die verschiedenen Dateien, einschließlich ~/.bash_profile, sind alle zusammen geladen und dienen nur zu organisatorischen Zwecken). Python virtuelle Umgebungen funktionieren auch gut.

Sowie:

alias python=python3

oder

alias python='/usr/bin/python3'

Skripte können dann mit etwas beginnen wie:

#!/usr/bin/env python

Anstatt von

#!/usr/bin/python3

Ich würde immer noch empfehlen zu verwenden #!/usr/bin/python3 (oder #!/usr/bin/env python3) in Skripten für einfachere Kompatibilität.

Verwenden env eignet sich gut für den gemischten Einsatz mit virtuellen Umgebungen.


68
2018-06-02 16:31



Dies scheint jetzt veraltet zu sein: Sie planten, python2 in Xenial zu entfernen, taten dies aber nicht. - OrangeDog
@OrangeDog, danke für das Update. Ja, die von mir zitierte Wiki-Seite wird jetzt als veraltet markiert, da in den letzten zwei Jahren mehr Fortschritte gemacht wurden, nur auf Python 3 umzusteigen. Die neue Seite, die diesem Fortschritt folgt, ist der Offizielle Ubuntu Python Seite. - Kevin
Die "neueste" Seite ist auch bezüglich der Pläne für Xenial veraltet. - OrangeDog
Ich würde nicht sagen, dass es "veraltet" ist und "es wurde in letzter Zeit nicht aktualisiert". Es scheint immer noch der aktuelle Ort zu sein, um Post darüber zu halten. In den Kommentaren hier würde ich jedoch andere aktuelle Quellen schätzen, die jemand finden kann. Hinzufügen von mehr Quellen zu meiner Antwort, warum nicht die Änderung zu Just python, ist nicht wirklich relevant, bis die Konvertierung abgeschlossen ist. Selbst dann wird es vielleicht einfach kein Problem mehr. - Kevin
@OrangeDog es ist sehr viel möglich, ein Xenial-System ohne Python 2 zu haben - Ich habe Ubuntu Xenial Mate auf Raspberry PI ausgeführt und es hatte Desktop, aber nein python2.7. Es gibt noch einige optionale Pakete (oder solche, die für die Desktop-Erfahrung benötigt werden) Programme, die Python 2 in sich ziehen, also haben Sie wahrscheinlich solche. - Antti Haapala


Update: Das ist der falsche Weg, habe ich gelernt, da Python2 und Python3 nicht austauschbar sind.

Sie können das Befehlszeilenprogramm versuchen update-alternatives.

$ sudo update-alternatives --config python

Wenn Sie den Fehler "Keine Alternativen für Python" erhalten, dann richten Sie selbst eine Alternative mit dem folgenden Befehl ein:

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

Ändern Sie den Pfad /usr/bin/python3 entsprechend Ihrer gewünschten Python-Version.


8
2018-05-04 14:03



python2 und python3 sind keine Alternativen. Verwenden Sie keine Update-Alternativen für diesen Zweck. - jobin
Warum sind sie nicht? Kann einer von euch bitte erklären warum update-alternatives ist nicht für Python geeignet? Ist es wegen legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
Alternativen sind unterschiedliche Implementierungen für die gleichen Funktionalitäten. python2 und python3 bieten nicht die gleichen Funktionalitäten. - Ely
Sie können so etwas tun, wenn Sie manuell (über PPA oder was auch immer) andere Versionen von python3 installieren. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


Ubuntu und der Rest der Linux-Distributionen sind für eine Reihe von Anwendungen und Befehlen immer noch weitgehend von Python 2.7 abhängig. Wenn Sie die Standardreferenz von "Python" in Python 3.x ändern, wird eine Reihe von Python-Funktionen Assertionsfehler auslösen.

Unter Ubuntu würde zum Beispiel 'pip' nicht mehr korrekt ausgeführt, es sei denn, Sie haben die Datei direkt bearbeitet und den Shebang in '#! / Usr / bin / env python2.7' geändert. Bei RHEL-Red Hat Enterprise Linux-Varianten wie Red Hat, Fedora und CentOS ist der Befehl "Yum" ebenfalls von Python 2.7 abhängig.

Mein Punkt hier ist, dass Sie eine erhebliche Menge an Code verursachen würde, um Assertionsfehler zu werfen, nur damit Sie "python" im Terminal eingeben können, um auf Python 3.x zu verweisen.

Sie sind viel besser dran mit dem 'python3' Befehl im Terminal und dem Shebang '#! / Usr / bin / env python3' in Ihren Python 3.x Dateien.


3
2018-03-25 15:43





Machen

cd ~
gedit .bash_aliases

dann schreibe entweder

alias python=python3

oder

alias python='/usr/bin/python3'

Speichern Sie die Datei, schließen Sie das Terminal und öffnen Sie es erneut.
Verknüpfung


1
2017-09-15 18:36





Sie können verwenden update-alternatives um verschiedene Versionen von Programmen bereitzustellen, die aufgrund von Kompatibilitätsproblemen möglicherweise zu unterschiedlichen Zeiten benötigt werden.

Diese Antwort Dies ist ein gutes Beispiel dafür, wie Sie Dinge einrichten können, um beispielsweise gleichzeitig verschiedene Versionen von gcc / g ++ zu verwalten.

machen Sie das gleiche mit Python2.7 und Python 3.3


0
2017-10-18 13:19



Anfängliche Benutzer sind möglicherweise nicht in der Lage, die verknüpfte Antwort an eine andere Situation anzupassen. Zusätzlich zur Anrechnung der früheren Antwort wäre es gut, die für Python erforderlichen Schritte festzulegen. - chaskes
Hier habe ich eine gute Schritt für Schritt Lösung gefunden linuxconfig.org/... - woto


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

(vorausgesetzt, Sie haben Schreibrechte für / usr / local / bin) Gleichfalls

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

dann tippst du nur py (und benutze py in #! lines) für deinen gewählten Python.


0
2018-01-15 22:57





Sie können Symlinks erstellen /usr/bin/python zu python3 mit

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

Sehen Sie sich die anderen Antworten an, warum Sie das nicht möchten. Ubuntu 18.04 kommt nicht mehr mit Python 2, also sollte es nicht so schlimm sein.


0
2018-05-03 21:01