Warum kann ich keine Update-Alternativen verwenden, um Python 2 oder 3 auszuwählen?

7

Gibt es einen bestimmten Grund, warum update-alternativesnicht mit PythonUbuntu gearbeitet wird, da es mit verschiedenen Versionen geliefert wird?

user3371321
quelle

Antworten:

14

Der Grund ist, dass pythonVersionen nicht vollständig kompatibel sind. Wenn Sie die 3.3Version als Standard festlegen , 2.7funktionieren die Anwendungen nicht.

enedil
quelle
9
Genau. Python 2 und 3 werden nicht als Alternativen betrachtet. Das sind ganz andere Dinge.
Oli
1
@Oli Großartig ... außer dass sich Python 2.x automatisch mit / usr / bin / python verbindet, was IMO das falsche Verhalten ist, da es sich nicht um Alternativen handelt.
Powerlord
2
@Powerlord, Nein, es ist kein falsches Verhalten, da pythones immer bedeuten soll, dass Python 2 und Python 3 immer als bezeichnet werden python3. Ich habe irgendwo in einem PEP oder in einer Python-Mailingliste einen Hinweis dazu gesehen (kann mich nicht genau erinnern, woher die Quelle stammt).
Hibou57
@ Hibou57 Ich denke, dass sie in ein oder zwei Jahren ihre Bedeutung ändern werden und Python eine symbolische Verbindung zu Python3 sein wird. Das ist in Arch Linux.
Ende
-4

Oder vielleicht kannst du.

Wichtiger Hinweis: Die vorgestellte Lösung unten (mit update-alternatives) können brechen Sie Ihr System. Wenn Probleme auftreten, versuchen Sie, sie zu beheben und Python 3 beizubehalten. Melden Sie die vorgenommenen Korrekturen an den richtigen Websites für Fehlerberichte und helfen Sie der Community, zu wachsen. oder gehen Sie zurück zu Python 2. Am Ende der Antwort füge ich einen einfachen Befehl hinzu, um bei Bedarf zurück zu gehen.

Wenn Sie Python nur für Ihren eigenen Benutzer und nicht für das System ändern möchten, können Sie einen Alias ​​verwenden.

Lösung 1: Alias

Fügen Sie diese Zeile in Ihre ~/.bashrcoder ~/.bash_aliases-Datei ein:

alias python=python3

Und das ist alles. Sie müssen nicht unten lesen.

Lösung 2: Update-Alternativen

Wenn der Alias ​​nicht das ist, wonach Sie suchen, und Sie die Standardeinstellung des gesamten Systems wirklich ändern möchten, lesen Sie weiter.

Überprüfen Sie zuerst Ihre Python-Version:

# python -V
Python 2.7.13

Verwenden Sie diese Befehle, um Alternativen zu installieren (ausführen rootoder verwenden sudo)

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2

Konfigurieren Sie dann die Version mit (erneut auch ausführen rootoder verwenden sudo):

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.5   2         auto mode
  1            /usr/bin/python2.7   1         manual mode
  2            /usr/bin/python3.5   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2

Überprüfen Sie nun die Version:

# python -V
Python 3.5.3

Wenn Sie den obigen Befehl ausführen, können Sie Python 3 auswählen selection number: 0oder 2auswählen. Wenn Probleme auftreten, führen Sie es erneut aus und wählen Sie die Nummer aus 1, um zu Python 2 zurückzukehren.


Gute Lesungen:

python3-Anweisung

Hack-a-Day

Die Register News

Dr. Beco
quelle
2
Dies wird Ihr System schwer brechen . Versuchen Sie dies NICHT.
Thomas Ward
Vielleicht auf Ubuntu. Als langjähriger Benutzer von Debian und Systemadministrator experimentiere ich seit einem Monat mit einem meiner Systeme und nichts bricht zusammen. Ich werde aktualisieren, wenn etwas schief geht.
Dr. Beco
Das bricht auch Debian, weil nicht alles einer Python 2 -> Python 3-Konvertierung unterzogen wurde. Halten Sie die Debian-spezifischen 'Korrekturen' dafür von Ubuntu fern, da ich Ihnen zu 100% garantieren kann, dass dies jetzt in Debian Unstable oder in Ubuntu * die Funktionsfähigkeit des Systems explodiert .
Thomas Ward
Überprüfen Sie auch: unix.stackexchange.com/questions/177899/… und gist.github.com/patrickmmartin/5b6b2ddecd29d6a1b2ffee2d8eea31ec und natürlich die passende Unterbrechung: stackoverflow.com/questions/43062608/… . Sie müssen keinen Alarm auslösen , sondern nur besprechen, was kaputt geht, anstatt zu versuchen, den Menschen Angst zu machen.
Dr. Beco
Es tut mir leid, dass ich nicht einverstanden bin, aber mein aktuelles Experiment (der echte Server läuft seit einem Monat rund um die Uhr) ist nicht kaputt. Vielleicht brechen andere Pakete, die für mein eigenes System nicht so notwendig sind und keine installierten Pausen sind, und ich habe sie nicht zu überprüfen. Wie auch immer, es funktioniert gut.
Dr. Beco