Aktualisieren von Python auf Ubuntu-System

78

Ich möchte den Python-Build auf meiner Linux-Box aktualisieren, aber die einzige Möglichkeit, wie ich es tun kann, besteht darin, die aktuelle Version zu deinstallieren und die neue zu installieren. Mein System ist bereits auf dem neuesten Stand (ich habe gestern aktualisiert). Ich wollte wissen, ob es eine Möglichkeit gibt, ein bestimmtes Programm über die Befehlszeile zu aktualisieren, z sudo apt-get update <program-name>. Ich weiß, dass dieser Befehl nicht existiert, aber ich hoffe, dass etwas Äquivalentes dies tut.

efficiencyIsBliss
quelle
Wenn Ihr System auf dem neuesten Stand ist, ist es auch das Python auf Ihrem System (entsprechend Ihren Repositorys). Liege ich falsch?
CYRUS

Antworten:

64

Wie bereits erwähnt, sudo apt-get install packageinstalliert bare die neueste verfügbare Version und ersetzt bei Bedarf die ältere.

Bei einigen Programmen (darunter Python) ist die Situation jedoch etwas anders. Einige wichtige, sehr und inkompatibel unterschiedliche Versionen erhalten ihre eigenen Pakete. Zum Beispiel leben Python 2.6 , Python 2.7 , Python 3.1 alle in separaten Paketen auf Ubuntu.

Von besonderer Bedeutung ist die Tatsache, dass eine der Ubuntu-Richtlinien darin besteht, Python ausgiebig zum Schreiben von Endbenutzersoftware zu verwenden. Also in der Tat ziemlich großer Teil des Systems ist in Python geschrieben. Im Moment läuft der Code auf Python 2.6 - daher ist diese Version bei der Installation die Standardversion. und der Code wird nicht einfach auf Python 2.7 laufen - weil Inkompatibilitäten bestehen. Um das System auf Python 2.7 umzustellen, müssen Sie zunächst alle Skripte aktualisieren und erneut testen. Dies ist nicht einfach möglich. Das heißt, Sie können Ihr System nicht einfach auf Python 2.7 "umstellen" und die ältere Version löschen.

Aber. Wenn Sie sich nicht für ausgefallene Zahnräder Ihres Systems interessieren und nur neueres Python benötigen, sehen Sie keine Hindernisse. Gehen Sie und sudo apt-get install python3codieren Sie mutig für 3.x Python; Denken Sie daran, Ihre Skripte mit shebang line zu starten python3und zu verwenden #!/usr/bin/env python3.

ulidtko
quelle
6
Sehr detailliert über die Arbeit hinter den Kulissen.
efficiencyIsBliss
16
sudo apt-get install python 3.3.3

Dies ist für Python (3.3.3) für verschiedene Versionen die entsprechende Versionsnummer verwendet werden sollte.

Mrinal
quelle
4
Ich denke, der Raum zwischen Python und Version sollte nicht da sein. sudo apt-get install python3.6hat für mich funktioniert, hat aber keinerlei Einfluss auf Python 3.5.
GUI Junkie
sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... Getrennte Argumente weisen apt an, mehrere Pakete zu installieren
Clancy Hood
3
Nach der Installation ist meine Python-Versionsnummer gleich? Was könnte der Grund sein?
Ramesh Pareek
Ich habe diese Methode verwendet, kann aber nicht herausfinden, wo sie installiert wurde (z. B. wie eine 3.7-Shell geöffnet wird). @RameshPareek das könnte auch dein Problem gewesen sein. scheint nicht in / usr / bin zu sein. python is already the newest version (2.7.12-1~16.04). python set to manually installed.irgendwelche Ideen?
Bjorks Nummer eins Fan
10
sudo apt-get install python3.6

Dadurch wird Python 3 unter Linux zusammen mit Python 2 installiert. Um auf Python 3 zuzugreifen, geben Sie nach dem Öffnen des Terminals Folgendes ein.

python3
G-Ox7cd
quelle
2
Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
DavidPostill
3
Entschuldigung, ich wollte nur den Befehl schreiben, um den neuen zu bekommen.
G-Ox7cd
6
Wenn ich E: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa
1
sudo add-apt-repository ppa: deadsnakes / ppa -y & sudo apt-get update
ski_squaw
E: Unable to locate package python3.6
Dims
4

Sie sind mit dem Gedanken an einen Befehl wie sudo apt-get update(der ein tatsächlicher Befehl ist, aber nicht das tut, was Sie wollen.)

Führen Sie einfach den folgenden Befehl aus, um Python und alles andere, was Sie installiert haben, zu aktualisieren:

sudo apt-get upgrade
Wuffers
quelle
Danke, aber ich wusste bereits über den Update-Befehl Bescheid, weshalb ich die Tatsache bekannt gab, dass mein System bereits auf dem neuesten Stand ist. Ich hatte gehofft, einen Befehl zu finden, der auf bestimmte Apps abzielt.
efficiencyIsBliss
apt würde nichts auf den neuesten Stand bringen, also würde es keinen Unterschied machen; p
Journeyman Geek
Das OP möchte Python spezifisch aktualisieren . Es ist ein fauler und schlechter Rat, ihnen zu sagen, dass sie alle Pakete, die sie haben, aktualisieren sollen.
Przemek D
3

Von unserer Schwestersite: https://askubuntu.com/questions/44122/how-to-upgrade-a-single-package-using-apt-get

Jeder dieser Befehle wird bei der Installation aktualisiert. Dies sollte in vielen Fällen problemlos funktionieren, ist jedoch in bestimmten Fällen möglicherweise nicht das, wonach Sie suchen.

Wenn Sie nur ein bestimmtes Paket UND nur dann aktualisieren möchten, wenn es bereits installiert ist, verwenden Sie den folgenden Befehl:

sudo apt-get install --only-upgrade packagename
music2myear
quelle
3

Wenn Sie nur eine kleinere Version des Python-Pakets wie 2.7.11+ bis 2.7.12 aktualisieren möchten, sudo apt-get install python2.7sollten Sie dies tun

Senthil Kumar Vaithiyanathan
quelle
2

pyenv ist möglicherweise eine gute Option für Sie: https://github.com/yyuu/pyenv


In Bezug auf die Antwort von @ ulidtko besteht eine mögliche Alternative zum vollständigen Ersetzen des System-Pythons darin, eine isolierte Umgebung mit Ihrer gewünschten Python-Version zu verwenden. Dies ähnelt einer "virtuellen Umgebung", gilt jedoch für Python selbst. Ich habe dies in der Vergangenheit für Legacy-Projekte verwendet, die auf Python 2.6 ausgeführt werden, sowie beim Upgrade von einer Legacy-Version von Python auf Python3.

ganz genau
quelle
Ich kenne mich in der Gegend nicht aus, aber können Sie erklären, wie dies die Frage beantwortet und das Problem löst?
Ben N
1
In Bezug auf die Antwort von @ ulidtko ( superuser.com/a/241903/152143 ) besteht eine mögliche Alternative zum vollständigen Ersetzen des Systempythons darin, eine isolierte Umgebung mit Ihrer gewünschten Python-Version zu verwenden. Dies ähnelt einer "virtuellen Umgebung", gilt jedoch für Python selbst. Ich habe dies in der Vergangenheit für Legacy-Projekte verwendet, die auf Python 2.6 ausgeführt werden, sowie beim Upgrade von einer Legacy-Version von Python auf Python3.
Schön,
1
apt-get install python

Ich glaube das sollte funktionieren. Sie müssen 'python' so ändern, dass es offensichtlich mit dem entsprechenden Paketnamen in Ihrem Repository übereinstimmt.

mbreedlove
quelle
1

Wie wir alle wissen, wird Python mit Version 3.5 ausgeliefert. Daher ist es sehr einfach, Python 2.7 (das standardmäßig in Ubuntu 16.04 enthalten ist) auf Python 3.5 zu aktualisieren.

Befolgen Sie die folgenden Schritte:

  1. Terminal öffnen.
  2. Melden Sie sich mit dem Befehl sudo als Root an.
  3. Verwenden Sie den folgenden Code, um Python 2.7 auf 3.5 zu aktualisieren

    sudo apt-get install python3.5

  4. Sie werden nach Ihrer Erlaubnis gefragt, und geben Sie die Option Y ein.

  5. Warten Sie, bis der Vorgang abgeschlossen ist.
  6. Löschen Sie den Bildschirm mit dem Befehl clear
  7. Überprüfen Sie die Python-Version mit dem folgenden Befehl.

    Python-Version

Big Data Guy
quelle
1
Bitte verwenden Sie in Zukunft die richtige Formatierung und vermeiden Sie Aussagen wie "Ich hoffe, dies wird Ihnen helfen." Sie sind nur Lärm. Bei der Beantwortung der Frage wird davon ausgegangen, dass Sie versuchen, die Frage mit etwas zu beantworten, das hilfreich ist. Sie sollten Ihre Antwort durchgehen und die geringfügigen grammatikalischen Fehler beheben, die ich nicht behoben habe, und Screenshots des Prozesses bereitstellen. Ich habe die Formatierung dieses Mal für Sie festgelegt, ich werde es nicht wieder tun. Ich bin der festen Überzeugung, dass Autoren gezwungen sein sollten, ihre eigenen Antworten und Fragen festzulegen.
Ramhound
Und es ist nicht so einfach, dies aktualisiert symbolische Links nicht richtig, so dass Sie am Ende 3.4 und 3.5 nebeneinander haben. Python2 ist in der Regel ohnehin Seite an Seite mit Python3. Wir aktualisieren Python2 nicht auf Python3, sondern migrieren unsere Arbeit.
McKenzm
0

In dem Einzelfall, in dem Sie eine LTS-Version ausführen, ist Ihr Python möglicherweise von einer Nebenversion betroffen, z. B. 2.7.5 statt 2.7.10.

Eine Möglichkeit wäre , das System zu aktualisieren :

  • setzen prompt=normalin/etc/update-manager/release-upgrades
  • Aktualisieren Sie das System
    • In der Befehlszeile können Sie eingeben sudo do-release-upgrade, dass der Upgrade-Manager das Upgrade auf die neueste (= Nicht-LTS-) Version durchführt.
    • Die GUI-Lösung verwendet den Update Manager

Lesen Sie wie immer beim Upgrade die Versionshinweise , da das Upgrade in einigen Fällen Ihr System beschädigen kann (siehe @ Gino's Kommentar) .

serv-inc
quelle
Alter, ich habe dein Wechselgeld ausprobiert und es hat mein Ubuntu 14.04-System kaputt gemacht ! Grundsätzlich hat es versucht, von 14.04 auf Ubuntu 15 zu aktualisieren, und es war nicht in der Lage, dies erfolgreich zu tun, so dass mein System in einem halben Zustand belassen wurde, in dem die grafische Anmeldung nicht mehr funktionierte - z. B. ich würde mich über die grafische Anmeldung anmelden und es würde kicken mich wieder auf die gleiche grafische Anmeldung. Ich habe gerade die letzte Stunde mit der Neuinstallation von Ubuntu 14.04 auf meinem Computer verbracht, um den Bruch Ihrer vermeintlichen Lösung zu beheben .
Gino,
@Gino: Danke für das Feedback. Haben Sie sich askubuntu.com/questions/612973/… , askubuntu.com/questions/223501/… und die Versionshinweise angesehen ? Es liegt ein Problem mit dem fglrx-Treiber von AMD vor. Möchten Sie weitere Hilfe?
serv-inc
Ich denke, Ihr Vorschlag, die normalen Sicherheitsüberprüfungen zu umgehen und damit ein Upgrade auf eine Nicht-LTS-Version zu ermöglichen, ist mit Gefahren behaftet. Bis heute weiß ich nicht, warum das Upgrade fehlgeschlagen ist, da keine diagnostizierbaren Fehlermeldungen angezeigt wurden. Stattdessen hatte ich ein System, das nicht mehr benutzbar war. Wenn ich mich richtig erinnere, habe ich die Ubuntu-Installation mit bestimmten Einstellungen erneut ausgeführt, die den größten Teil meines Systems wiederherstellen konnten. Nebenbei bemerkt, ich bin ein professioneller Programmierer, daher kenne ich mich in der Regel mit einem Linux-System aus.
Gino
@Gino: Dies scheint das Standardverfahren zu sein, um von LTS zu Nicht-LTS zu wechseln. Es verändert den Bekanntheitsgrad von Neuerscheinungen. Man kann dies auf "unterstützte" (reguläre) Releases, "langfristige" (LTS) Releases oder sogar "nichts" (keine größeren Upgrades) einstellen . "'Für das Zitat siehe askubuntu.com/questions/240160/… . Es verwendet den Upgrade-Manager des Systems. Leider funktionierte in Ihrem Fall das (Standard-) Upgrade nicht, was möglicherweise auf einen
fehlerhaften