So wechseln Sie nach dem Upgrade auf Ubuntu 18.04 standardmäßig sicher zu Python3


12

Da dies python3die Standard-Python-Version in Ubuntu 18.04 ist und python2bei einer neuen Ubuntu 18.04-Installation nicht standardmäßig ausgeliefert wird, wie kann ich python3nach einem Upgrade auf Ubuntu 18.04 (ab 16.04) die Standardeinstellung festlegen? Derzeit ist nach dem Upgrade python2immer noch Standard (z. B. pythonBefehl verweist auf python2usw.). Das pythonLöschen des Pakets führt jedoch dazu, dass zu viele Pakete entfernt werden, die darauf angewiesen sind. Daher ist dies hier keine Option.

Im Idealfall möchte ich die python2Abhängigkeit so weit wie möglich entfernen . Möglicherweise könnte der Upgrade-Prozess so gestaltet sein, dass alle Pakete überprüft werden, ob sie noch wirklich auf python2Abhängigkeiten angewiesen sind, und dadurch alle python2Abhängigkeiten erfasst werden, die durch eine äquivalente python3Abhängigkeit ersetzt werden könnten (die dann durch das Upgrade aufgelöst wird).


Bitte überprüfen Sie den neuen Wortlaut. Vorher war etwas unklar, was Sie fragten. Versucht, dies aus dem Titel Ihres Beitrags zu sortieren.
Juan Antonio

Vielen Dank für die Bearbeitung @JuanAntonio. Die meisten Änderungen sehen gut aus. Ich habe gerade einige weitere Korrekturen vorgenommen, um diese Fragen in die richtige Richtung zu lenken.
Zazi

Ist dies sicher, was ist das Ende des Entfernens von Python2 oder des Verlassens von Python2? Wenn es da ist, dann braucht es etwas!
George Udosen

2
Tatsächlich wird Python 2 in 18.04 nicht standardmäßig installiert. Wenn Sie es haben, liegt dies daran, dass Sie ein zusätzliches Paket installiert haben (oder ein Upgrade mit den bereits installierten Paketen durchgeführt haben), für das weiterhin Python 2 erforderlich ist. 3.x ist Standard bedeutet nicht, dass es im Archiv keine Dinge mehr gibt, die 2.x verwenden. 20.04 wird Python 2.x sicherlich nicht mehr haben, da es zu diesem Zeitpunkt nicht mehr von Upstream unterstützt wird.
Dobey

"Was ist das Ende des Entfernens von Python2" - ein ziemlich sauberes System. Meine Python-Installationen waren nach dem Upgrade irgendwie kaputt.
Zazi

Antworten:


11

Dieser Beitrag ist etwas alt, aber ich glaube, es gibt eine bessere Alternative: Geben Sie ein update-alternatives. Im Folgenden wird Ihr /usr/bin/pythonStandardwert auf 2,7 festgelegt, aber 3.6 ist verfügbar, wenn Sie möchten:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

Die höchste Priorität wird hier als "automatische" Auswahl verwendet, /usr/bin/pythonaber Sie können einfach durch Ausführen wechseln sudo update-alternatives --config python.


1
gute Antwort. In meinem Fall wurde Python2.7 von NodeJS / Npm installiert und irgendwie als Standard für festgelegt python. Ich habe sudo update-alternatives --remove-all pythonalle Pythons entfernt und dann die einzige Python hinzugefügt, die ich verwenden möchte sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Gut zu wissen ist auch sudo update-alternatives --list pythonzu sehen, was was ist.
Philshem

1
Vielleicht möchten Sie auch sudo apt install python3-pipundsudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel

10

Um python2 vollständig zu entfernen, müssen Sie das python2.x-minimalPaket löschen, das von ausgeführt wird

sudo apt purge python2.x-minimal

Ersetzen Sie x durch die genaue Version von Python 2 auf Ihrem System. Überprüfen Sie jedoch, welche anderen Pakete entfernt wurden, da Sie möglicherweise Pakete mitgeführt haben, die auch nach dem Upgrade noch von Python 2 abhängen. Diese Pakete werden ebenfalls deinstalliert und funktionieren nicht mehr.


Es gibt keinen "Standard" -Python-Interpreter, da dies nur davon abhängt, auf welche tatsächliche Datei verwiesen wird. Um /usr/bin/pythondies in Python zu ändern, verwenden Sie den lnBefehl, um den Link zu aktualisieren. Nehmen wir beispielsweise an, Sie möchten, dass er auf Python 3.6 verweist

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

Wenn Sie dies nur für Ihren Benutzer wünschen, können Sie es alternativ als Alias ​​in Ihrem festlegen. .bashrcÖffnen ~/.bashrcSie dazu den Editor Ihrer Wahl und fügen Sie die folgende Zeile hinzu

alias python='python3.6' 

"Da Sie möglicherweise Pakete mitgeführt haben, die auch nach dem Upgrade noch von Python 2 abhängen" <- Ja, und ich beabsichtige, diese Abhängigkeit zu beseitigen, da dies nicht wirklich erforderlich ist, da Ubuntu 18.04 sie ohne python2Abhängigkeit unter Verwendung der Standardeinstellung ausführt python3Abhängigkeiten / Pakete.
Zazi

1
Ist dies sicher, was ist das Ende des Entfernens von Python2 oder des Verlassens von Python2? Wenn es da ist, dann braucht es etwas!
George Udosen

0

Auf meinem 16.04 /usr/bin/pythonist nur ein Link zu, /usr/bin/python2.7also gehe ich davon aus, dass Sie diesen Link nur ändern müssten, um darauf zu verweisen /usr/bin/python3.x(mit angemessenem xnatürlich).


Sie konnten zeigen auch /usr/bin/pythonauf /usr/bin/python3, das ist ein Link auf die neueste python3 Version installiert. Oder nur ein Alias ​​oder eine Funktion in Ihrem ~/.bashrc.
Tonnenweise

Nein, ich denke, das ist nicht wirklich das, was ich hier machen möchte. Ich möchte python2in meinem System loswerden (wie es der Standardfall bei der Installation eines neuen Ubuntu 18.04 ist, wo python3Standard ist und python2nicht standardmäßig installiert ist)
zazi

2
@zazi Ich würde das Spülen nicht empfehlen python2. Es scheint, dass viele andere Pakete davon abhängen. Haben Sie Nachteile, wenn Sie python2installiert bleiben ?
Kev Inski

Ich habe keinen Nachteil python2, wenn es installiert bleibt , wenn es wirklich notwendig ist, aber ich möchte es eindeutig python3als Standard festlegen , dh das python2so oft wie möglich entfernen (und eine Neuinstallation von Ubuntu 18.04 zeigt, dass dies möglich ist).
Zazi

In der Tat.
Kev Inski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.