Update all python packages

Problemstellung:

  • Alle python packages auf einem System auf einmal aktualisieren:

Lösungsansatz:

Wie bei Linux selbst (apt-get) oder anderen Frameworks gibt es auch bei Python die Möglichkeit festzustellen, welche Pakete aktualisiert werden können. Leider gibt es bislang keinen einfachen pip Parameter, um sämtliche Pakete auf dem System zu aktualisieren.

Der Lösungsansatz besteht darin, über pip eine Liste der nicht aktuellen Pakete zu erzeugen, diese formattechnisch aufzubereiten und als Input an das –upgrade Kommando von pip weiterzu”pipen”. Das Kommando zum Erzeugen der Liste durch pip ist relativ einfach.

Es wird dann eine Liste der Pakete angezeigt, bei denen es eine aktueller Version gibt.

Formatierung der Liste

Die Darstellung der Liste variiert je nach der pip Konfiguration in der pip.conf (Linux) bzw. pip.ini (Windows). In der Version 9.0.1 erscheint zudem noch die folgende Meldung:

Im Prinzip wird hier schon alles gesagt. Wenn man also die Kontrolle über den pip list output erlangen möchte, kann man (a) das gewünschte Format als Kommandozeile mit geben oder (b) den Standardparameter in der pip Konfigurationsdatei angeben.

(a) Kommandozeile:

Die Option lautet –format. Dahinter wird nur mit einem Leerzeichen getrennt das gewünscht Format angegeben. Möglich sind legacy, columns, freeze oder json.

(b) Konfigurationsdatei:

Um im gesamten System die Standardeinstellung zu setzen, muss der gewünschte Standard in der pip Konfigurationsdatei in der Section [list] hinterlegt werden. Für das Format legacy muss die Datei den folgenden Inhalt haben. Die Formatnamen sind zur Kommandozeile identisch.

[list]
format=legacy

Bei der Konfigurationsdatei gibt es Unterschiede bzgl. des Pfads und des Dateinamens im System.

Windows:

Wenn der Ordner pip unterhalb von %appdata% nicht vorhanden ist, dann einfach anlegen und die Datei pip.ini erzeigen.

Linux:

Bei Linux wird die pip.conf im Home Directory des Users im Ordner .pip gespeichert. Achtung: Da pip meist unter sodu ausgeführt wird, muss die pip.conf in /root/.pip/pip.conf editiert werden.

Update aller Pakete unter Linux:

Update aller Pakete unter Windows:

Due to the fact that the string regex console commands are diffent, we have to dig a little bit in good old MS-DOS console commands.

 

Leave a Reply | Anmerkungen