Nach oben

Python aktualiseren

Inhaltsverzeichnis



Das normale aktualiseren von Paketen in Python

Übersicht über die bisher installierten Pakete:

pip list

So habt ihr schon einmal eine Ahnung, was bei euch überhaupt alles installiert ist.

Nun solltet ihr das aber auch aktualiseren. In den normalen updates mit apt update && apt upgrade laufen keine Updates für Python! Das müsst ihr schon selbst machen.

Was gibt es zum aktualiseren?

Es kann zwei Installationen von Python-Paketen geben, die einen unter eurem Benutzer und diejenigen unter dem root. Also kontrolliert beide - beginnt aber bei eurem Benutzer und beim root kontrolliert ihr was noch übrig geblieben ist.

pip list --outdated

Solche Antworten können dann bspw. wie folgt aussehen:

Package Version Latest Type
------- ------- ------ -----
pyzstd  0.15.7  0.15.8 wheel

Informationen über das Paket

Ihr müsst nicht über jedes Paket die Information abholen, dass ist euch überlassen, aber wenn ihr Informationen haben möchtet, dann könnt ihr das wie folgt abfragen:

pip show [Paketname]

Diese Informationen, vor allem der Eintrag Location: kann euch helfen, wo sich das Paket befindet, falls ihr es löschen müsst (weil es bei der Aktualisierung Probleme bereitet - doch zu dem kommen wir noch).

Wie aktualisiere ich die Pakete

Die eine Möglichkeit ist natürlich, jedes einzelne Paket von Hand - ist ein Weg, kein gemütlicher, aber ein Weg.
Doch man kann erst versuchen alles in eiem Aufwisch zu machen (klappt nicht immer wegen Abhängigkeiten oder unvollständigen Installationen):

Wie gerade gehabt, die Übersicht der zu aktualisierenden Pakete:

pip list --outdated

Dann alles in einem aktualisieren

pip list --outdated | awk '{if(NR>2) print $1}' | xargs -n1 sudo pip3 install -U

Es kann sein, dass nicht alles auf einmal aktualisiert wurde, es gab also Fehlermeldungen. Aber sicherlich ist einmal der grösste Teil weg, bzw. aktualisiert worden. Nun geht es darum, was blieb nun übrig und was muss man noch von Hand machen?

Erst einmal wieder die Übersicht holen:

pip list --outdated

Dann wollen wir von den übrig gebliebenen Paketen eines nach dem anderen betrachten und für sich aktualiseren:

pip install --upgrade [Paketname]

Normalerweise funktioniert das, wenn das Paket selbst aufgerufen wird.

Man kann das auch gleich als Bash-Script schreiben und ausführen lassen:

#!/bin/bash

# Aktualisieren der Python-Pakete
pip_list=$(pip list --outdated | awk '{print $1}')
for package in $pip_list
do
    pip install --upgrade $package
done

Probleme beim Aktualisieren

Nun kann es also sein, dass sich Pakete nicht so einfach aktualisieren lassen. Dazu müsst ihr die Fehlermeldung lesen und verstehen, es kann sein, dass irgendwelche Pakete fehlen, weil es nicht ganz sauber installiert wurde oder das sonst irgend ein Fehler vorliegt.

Nun wenn ein ganz komischer Fehler vorliegt, dann kann man versuchen das Paket einfach zu löschen. Sucht dabei die Information, wo es installiert wurde, also bspw.

pip show [Paketname]

Damit bekommt ihr bspw. die Information über sein Aufenthaltsort:

Location: /usr/local/lib/python3.9/dist-packages

also wechselt ihr in das Verzeichnis:

cd /usr/local/lib/python3.9/dist-packages

Danach löscht ihr alles was von dem Paket vorhanden ist:

rm -rf [Paketname]*

Danach installiert ihr das Paket wieder neu:

pip install [Paketname]

Nun sollte es geklappt haben. Es kann sein, dass ihr noch irgend eine Warnung bekommt, die kann man zur Kenntnis nehmen und gut ist.

WENN ihr aber immer noch Fehler habt!
Dann liesst diesen Fehler gut, es wird euch darauf hinweisen, dass in eurer Installation irgend ein Paket noch fehlt das ihr aus der Paketverwaltung installieren müsst (also «apt install …» ausführen müsst).