Die Standard-Python-Version kann in Ubuntu nicht auf Python3 festgelegt werden

145

Ich habe versucht, die Standard-Python-Version auf python3in zu setzen Ubuntu 16.04. Standardmäßig ist es python2(2.7). Ich habe die folgenden Schritte ausgeführt:

update-alternatives --remove python /usr/bin/python2
update-alternatives --install /usr/bin/python python /usr/bin/python3

Für die zweite Anweisung wird jedoch der folgende Fehler angezeigt:

rejeesh@rejeesh-Vostro-1015:~$ update-alternatives --install /usr/bin/python python /usr/bin/python3
update-alternatives: --install needs <link> <name> <path> <priority>

Use 'update-alternatives --help' for program usage information.   

Ich bin neu in Ubuntu und weiß nicht, was ich falsch mache.

RejeeshChandran
quelle
3
Wie in der Warnung angegeben, fehlt Ihnen die Priorität.
Greedy52
6
Achten Sie darauf, Python 2.7 nicht zu entfernen, da dies viele Funktionen Ihres Betriebssystems lahm legt (aus Erfahrung :()
Jacques de Hooge
Ich habe meine Antwort in Bezug auf Ihren Prioritätsfehler bearbeitet.
Steampunkery
1
Ein Wort der Warnung: Es klingt für mich nach einer schlechten Idee, pythonzu Python 3 zu wechseln . Die Standardmethode zum Aufrufen von in Python 2 geschriebenen Skripten ist python my-script-p2.py, solange es so ist python3 my-script-p3.py. Ich würde erwarten, dass sich viele Systemskripte darauf verlassen.
Jan Groth
1
Für diejenigen, die sich für das Thema interessieren, würde ich empfehlen, auf die virtuelle Umgebung zu achten: docs.python.org/3/tutorial/venv.html Mein Ubuntu 18 LTS verwendet immer noch Python 2.7 und ich verwende zum Beispiel das virtuelle Umgebung für die Verwendung von Python 3.X und auf dem neuesten Stand in meinen Django-Projekten.
Victor Björn

Antworten:

131

Öffnen Sie Ihre .bashrc-Datei nano ~/.bashrc. Geben Sie alias python=python3auf eine neue Zeile am Anfang der Datei speichern Sie die Datei mit Strg + o und schließen Sie die Datei mit Strg + x. Dann zurück zu Ihrem Befehlszeilentyp source ~/.bashrc. Jetzt sollte Ihr Alias ​​dauerhaft sein.

BEARBEITEN:

Bei Aktualisierungsalternativen ist die Priorität eine Ganzzahl. Die Priorität gibt an, welches Programm zuerst verwendet werden soll. Dieser Artikel fasst alles ziemlich gut zusammen.

Steampunkery
quelle
56
Das ist die falsche Antwort. Das Bearbeiten Ihres bashrc funktioniert nicht wie Update-Alternativen. Beispielsweise verwenden Skripte, die mit beginnen #!/usr/bin/env python, die Version in bashrc nicht. Bitte benutzen Sie die Antwort von @ Pardhu.
Steinzeuglord
Ich habe diese Antwort vor langer Zeit geschrieben und bin mir bewusst, dass Update-Alternativen nicht mit dem Ändern von bashrc identisch sind. Ich kann die Antwort bearbeiten, wenn Sie möchten.
Steampunkery
1
Für Benutzer mit dieser Frage ist es eher eine Warnung, dass das Ändern des Alias ​​nicht dasselbe bewirkt. Bis zu Ihnen, wenn Sie bearbeiten möchten.
Steinzeuglord
Dies ist die einzige Antwort, die mir geholfen hat. Ich habe es versucht sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5.2. But I got: update-alternatives: --install needs <link> <name> <path> <priority> Use 'update-alternatives --help' for program usage information.
Alexchenco
1
Ich habe das getan und es hat Dinge kaputt gemacht, wie virtuelle Umgebungen. Diese Antwort schafft mehr Probleme
Kuzeko
292

Die zweite Zeile kann in geändert werden

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

Dies ergibt eine Priorität von 10 für den Pfad von python3. Der Nachteil beim Bearbeiten von .bashrcDateien besteht darin, dass sie bei Verwendung der Befehle mit nicht funktionieren sudo.

Update: Bitte verwenden Sie, sudowährend Sie den Befehl wie folgt ausführen :

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

Pardhu
quelle
3
Guter und einfacher Ausweg.
PrakashG
7
Gut und auf den Punkt gebracht. "<Priorität>" in der Fehlermeldung schlug dies bereits vor. Übrigens wird normalerweise "sudo" benötigt, um diesen Installationsbefehl auszuführen.
ywu
4
Wie Sie sagten, musste ich "sudo update-alternatives --install / usr / bin / python python / usr / bin / python3 10"
Roy
3
Dies ist mit Sicherheit der richtige Weg, aber es ist erwähnenswert, dass das Ändern der systemweiten Standardeinstellung wahrscheinlich einige Probleme verursacht. Zum Beispiel musste ich einen Fix auf Terminator anwenden , der nur mit Python2 funktioniert.
Dale Anderson
1
Nicht vollständig arbeiten - nach diesem Befehl pythonläuft python3, aber python-configimmer noch läuft python2-configund allgemeine Bruch Ensues
Chris Dodd
35

So ändern Sie Python 3.6.8 als Standard in Ubuntu 18.04 in Python 3.7.

Installieren Sie Python 3.7

Schritte zum Installieren und Konfigurieren von Python3.7 als Standardinterpreter.

  1. Installieren Sie das python3.7-Paket mit apt-get

    sudo apt-get install python3.7

  2. Fügen Sie Python3.6 und Python 3.7 hinzu update-alternatives

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
  1. Aktualisieren Sie Python 3 so, dass es auf Python 3.7 verweist

    sudo update-alternatives --config python3 Geben Sie 2 für Python 3.7 ein

  2. Testen Sie die Version von Python

python3 --v
Python 3.7.1 
Purushottam Prabhakar
quelle
3
Möglicherweise möchten Sie eine Warnung einfügen, dass dadurch gepackte Software beschädigt werden kann. Python 3.6 ist die verteilte Standardeinstellung, und alle mitgelieferten Softwarepakete übernehmen ebenfalls diese Version.
Tim
Das hat mir geholfen. Vielen Dank.
Jeffrey Copps
Kann ich den Python durch Version 3.7 anstelle von Python3 ersetzen?
Wee Hong
@ Tim, was ist der beste Weg, um das zu erledigen?
Shreya
@Wee Hong, ja du kannst. Anstelle von $ sudo update-alternative --install / usr / bin / python3 python3 .... ersetzen Sie einfach $ sudo update-alternative --install / usr / bin / python python ..... und danach: sudo update -alternatives --config Python.
Arthur Zennig
23

Um zu python3 zu wechseln, können Sie den folgenden Befehl im Terminal verwenden alias python=python3.

DanteVoronoi
quelle
4
Dies funktioniert jedoch nur für den aktuell ausgeführten Prozess im Terminal. Wenn ich das Terminal schließe und öffne, wechselt es wieder zu Python2.
RejeeshChandran
2
@ RejeeshChandran Schauen Sie sich Steampunkery Antwort
Seraf
14

Ein einfacher sicherer Weg wäre die Verwendung eines Alias. Fügen Sie dies in die Datei ~ / .bashrc ein: Wenn Sie den gedit-Editor verwenden

gedit ~ / .bashrc

Um in die bashrc-Datei und dann oben in der bashrc-Datei zu gelangen, nehmen Sie die folgende Änderung vor.

alias python = python3

Nach dem Hinzufügen der oben genannten in der Datei. Führen Sie den folgenden Befehl aus

source ~ / .bash_aliases oder source ~ / .bashrc

Beispiel:

$ python --version

Python 2.7.6

$ python3 --version

Python 3.4.3

$ alias python = python3

$ python --version

Python 3.4.3

Khan
quelle
9

Als zusätzliches Extra können Sie auch einen Alias ​​für pip hinzufügen (in .bashrc oder bash_aliases):

alias pip = 'pip3'

Viele finden, dass eine Neuinstallation von python3 tatsächlich auf python3.x verweist, sodass Sie möglicherweise Folgendes benötigen:

alias pip = 'pip3.6'
alias python = 'python3.6'

Paraic
quelle
8

Installieren Sie zuerst Python3 und Pip3

sudo apt-get install python3 python3-pip

dann in Ihrem Terminal laufen

alias python=python3

Überprüfen Sie die Python-Version auf Ihrem Computer.

python --version

quelle
7

Wenn Sie Ubuntu Focal (20.20) haben, können Sie Folgendes installieren python-is-python3:

sudo apt-get install python-is-python3

um den Symlink zu ersetzen, um auf /usr/bin/pythonzu zeigen /usr/bin/python3.8.

Silviot
quelle
5

Wie es sagt, update-alternatives --install <link> <name> <path> und <priority> Argumente.

Sie haben link ( /usr/bin/python), name ( python) und path ( /usr/bin/python3), Ihnen fehlt die Priorität.

update-alternatives --help sagt:

<Priorität> ist eine Ganzzahl; Optionen mit höheren Nummern haben im Automatikmodus eine höhere Priorität.

Also einfach ein 100oder etwas am Ende setzen

user7502402
quelle
5

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.
Du solltest jetzt in Ordnung sein! Verknüpfung

Rika
quelle
5

Befolgen Sie einfach diese Schritte, um das Standard-Python auf die neu aktualisierte Python-Version zu ändern. Hat gut für mich funktioniert.

  • sudo apt-install python3.7 Installieren Sie die neueste Version von Python, die Sie möchten
  • cd /usr/bin Geben Sie das Stammverzeichnis ein, in dem Python installiert ist
  • sudo unlink pythonoder sudo unlink python3. Heben Sie die Verknüpfung der aktuellen Standardpython auf
  • sudo ln -sv /usr/bin/python3.7 python Verknüpfen Sie die neu heruntergeladene Python-Version
  • python --version Überprüfen Sie die neue Python-Version und los geht's
Shorya Sharma
quelle
3

Für einen anderen nicht-invasiven Ansatz nur für aktuelle Benutzer:

# First, make $HOME/bin, which will be automatically added to user's PATH
mkdir -p ~/bin
# make link actual python binaries
ln -s $(which python3) python
ln -s $(which pip3) pip

python pip wird in einer neuen Shell fertig sein.

tdihp
quelle
2

Holen Sie sich Python-Pfad von

ls /usr/bin/python*

Stellen Sie dann Ihre Python-Version ein

alias python="/usr/bin/python3"
pradeep karunathilaka
quelle
0

Der beste Weg in Ubuntu 18.04, der für alle Benutzer funktioniert, ist

sudo vim /etc/bash.bashrc
add lines
alias python=python3
alias pip=pip3

Speichern Sie die Änderungen und starten Sie neu.

Nach dem Neustart wird jede Version von Python 3, die Sie zusammen mit Python 2.7 im System haben, als Standard verwendet. Sie könnten genauer sein, indem Sie im Alias ​​Folgendes sagen, wenn Sie mehrere Versionen von Python 3 haben.

sudo vim /etc/bash.bashrc
add lines
alias python=python3.6
alias pip=pip3.6
Mian Asbat Ahmad
quelle
0

Einfach entfernen python-is-python2:

sudo apt purge python-is-python2

Und installieren python-is-python3:

sudo apt install python-is-python3

Es wird den Übergangsprozess zu neuem Python3 automatisieren. Optional können Sie verbleibende Pakete später entfernen:

sudo apt autoremove && sudo apt autoclean
Farab Alipanah
quelle
0

Um Python 3.6.8 als Standard in Ubuntu 18.04 von Python 2.7 zu ändern, können Sie das Befehlszeilentool ausprobieren update-alternatives.

sudo update-alternatives --config python

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

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

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

Das letzte Argument, das als Priorität angegeben wurde, bedeutet, dass die Alternative mit der höchsten Prioritätsnummer festgelegt wird, wenn keine manuelle Alternativauswahl getroffen wird. In unserem Fall haben wir eine Priorität 2 für festgelegt. /usr/bin/python3.6.8Infolgedessen /usr/bin/python3.6.8wurde die Version automatisch durch den Befehl update-alternatives als Standard-Python-Version festgelegt.

Wir können jederzeit zwischen den oben aufgeführten alternativen Python-Versionen wechseln, indem wir den folgenden Befehl verwenden und eine Auswahlnummer eingeben:

update-alternatives --config python
Ranjeet Singh
quelle
-1

Stellen Sie zunächst sicher, dass Python3 auf Ihrem Computer installiert ist

Gehen Sie zu Ihrem Terminal und geben Sie Folgendes ein:

cd ~/ um in Ihr Home-Verzeichnis zu gehen

Wenn Sie Ihr noch nicht eingerichtet haben, geben Sie .bash_profileein, touch .bash_profileum Ihr .bash_profile zu erstellen.

Oder geben Sie ein, open -e .bash_profileum die Datei zu bearbeiten.

Kopieren und speichern Sie alias python=python3im .bash_profile.

Schließen Sie Ihr Terminal und öffnen Sie es erneut. Geben Sie dann den folgenden Befehl ein, um zu überprüfen, ob Python3 jetzt Ihre Standardversion ist:

python --version

Sie sollten sehen, dass Python 3.xy Ihre Standardversion ist.

Prost!

nurealam siddiq
quelle
Diese Methode wurde bereits in der bevorzugten Antwort auf diese Frage beschrieben. und deine Antwort trägt nichts bei.
Tripulse