pip
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
pip ist ein rekursives Akronym für Pip Installs Python und ist das Standardverwaltungswerkzeug für Python-Module. Es ist expliziter Ersatz und indirekter Nachfolger für das ältere easy_install
aus den Python Setuptools. Mehr Details zu den Unterschieden zwischen pip und easy_install findet man im Python Packaging Guide 🇬🇧.
Im direkten Vergleich orientiert sich die Syntax von pip an der von anderen Paketverwaltern, wie z.B. APT. Des weiteren werden auch bei pip Abhängigkeiten von anderen Modulen direkt aufgelöst, d.h. zusätzlich benötigte Module werden direkt mit installiert.
pip installiert Python-Module, welche im Python Package Index 🇬🇧 aufgeführt sind. Außerdem besteht die Möglichkeit, Module direkt aus den Versionskontrollsystemen wie Git, Mercurial oder Subversion zu laden und dann zu installieren. Ebenfalls ist es möglich, Module zu installieren, welche zuvor auf den Rechner herunter geladen wurden.
Installation¶
pip kann als Python-Modul direkt aus den Paketquellen installiert werden[1]:
python3-pip (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install python3-pip
Oder mit apturl installieren, Link: apt://python3-pip
Manuelle Installation¶
Wer eine neuere Version von pip als die aus den Paketquellen benötigt der deinstalliert zunächst das etwaige Ubuntu-Paket[1] und ruft dann den Link https://bootstrap.pypa.io/get-pip.py
im Browser oder mittels wget auf, um das Installationsprogramm herunterzuladen.
Sollte der Browser die Datei nicht zum Download anbieten, sondern „nur“ im Browserfenster den Quelltext anzeigen, so öffnet man einfach einen Texteditor, kopiert den kompletten Quelltext aus dem Browserfenster und fügt ihn im Editor ein. Danach speichert man die Datei unter dem Namen get-pip.py in einem beliebigen Verzeichnis, z.B. im Homeverzeichnis.
Danach wechselt man in dieses Verzeichnis und ruft zur Installation der Python 3 Version den folgenden Befehl auf[2][3]:
sudo python3 get-pip.py
Jetzt installiert sich pip ins Verzeichnis /usr/local/bin und ist dann einsatzbereit.
Nutzung¶
Hinweis!
Fremdsoftware kann das System gefährden.
Anmerkung: Module aus dem Python Package Index werden an der Paketverwaltung „vorbei“ installiert. Dies birgt zwar an sich gesehen auch bei globaler Installation keine Konflikte, kann aber zu unvorhergesehen Ergebnissen oder Problemen mit Python-Skripten führen, wenn das gleiche Python Modul auch über die Paketverwaltung installiert wird, zumal mittels pip
installierte Module denen aus der Paketverwaltung vorgezogen werden.
Wohin werden mit pip installierte Python-Module installiert?¶
Das Verzeichnis, in das pip das Python-Modul (bzw. dessen Dateien) installiert, hängt davon ab, wie bzw. mit welchen Optionen man pip aufruft.
Wird pip mit Root-Rechten ausgeführt, befinden sich die installierten Module im Verzeichnis /usr/local/lib/pythonX.Y/dist-packages/ bzw. einem Unterverzeichnis davon, wobei X.Y
die Python-Version ist, für die installiert wurde. Sind im Python-Modul ausführbare Programme enthalten, werden diese nach /usr/local/bin abgelegt.
Wird pip mit Nutzerrechten (also ohne Root-Rechte) aufgerufen, befinden sich die installierten Module im Verzeichnis ~/.local/lib/pythonX.Y/site-packages bzw. einem Unterverzeichnis davon, wobei X.Y
die Python-Version ist, für die installiert wurde. Sind im Python-Modul ausführbare Programm enthalten, werden diese im Homeverzeichnis des Nutzers unter ~/.local/bin abgelegt.
Hinweis:
~/.local/bin ist wegen eines Bugs eventuell nicht im Suchpfad für ausführbare Programme enthalten, man muss das Verzeichnis in diesem Fall manuell der Umgebungsvariable PATH hinzufügen, indem man es in die Datei ~/.profile einträgt. Danach sollte man sich als Nutzer einmal ab- und dann wieder neu anmelden, damit die Änderung greift. Siehe dafür auch Umgebungsvariable/Dateien (Abschnitt „Environment-einzelner-oder-aller-Benutzer“) sowie Umgebungsvariable/typische Anwendungsfälle (Abschnitt „PATH-erweitern“).
Bei Verwendung von pip in Kombination mit venv befinden sich die Module innerhalb des Modulverzeichnisses des „Virtual Environments“.
Wohin sollte man installieren?¶
Es gibt selten Gründe, ein Python-Modul systemweit für alle Nutzer zu installieren. Module, die vom System benötigt werden, werden normalerweise systemweit über die Paketverwaltung installiert. Von daher ist die lokale Installation für die Nutzer oder die Installation in ein lokales „Virtual Environment“ der zu bevorzugende Weg.
Die lokale Installation bzw. ein lokales „Virtual Environment“ hat weiterhin den Vorteil, dass man keine Konflikte bzw. Probleme mit Modulen bekommt, die systemweit über die Paketverwaltung installiert wurden.
Hinweis:
Für die selbe Python-Version lassen sich standardmäßig Module nicht parallel lokal für einen Nutzer und systemweit installieren, es ist nur eine von beiden Installationen möglich.
Wer verschiedene Versionen des gleichen Moduls braucht muss dann auf ein "Virtual Environment" zurück greifen.
pip ausführen¶
pip ist ein Kommandozeilenprogramm. Die allgemeine Syntax für die Python 3 Version lautet[2]:
pip3 BEFEHL [OPTION(EN)] MODUL(E)
Das für Python 3.4 und neuer verfügbare Modul von pip lässt sich wie folgt nutzen:
python3 -m pip [OPTION(EN)] BEFEHL MODUL(E)
Zu beachten ist auch, dass pip – im Gegensatz zum allgemeinen Verhalten von Linux und Python – nicht "case-sensitve" arbeitet, d.h. Groß- / Kleinschreibung wird nicht unterschieden. Der Befehl pip3 install modulname
installiert das Modul genau so wie pip3 install ModulName
.
Einige Befehle sind:
Befehle von pip | |
Befehl | Erklärung |
install MODUL | Installiert das Modul MODUL. Es können auch mehrere Module angegeben werden, die dann alle installiert werden. |
uninstall MODUL | Deinstalliert das Modul MODUL. Es können auch mehrere Module angegeben werden, die dann alle deinstalliert werden. |
list | Zeigt die installierten Python-Module an. |
show MODUL | Zeigt Informationen zum installierten Modul MODUL an. |
Einige Optionen von pip in Kombination mit dem Befehl install
sind:
Optionen von pip in Kombination mit dem Befehl install | |
Option | Erklärung |
-U , --upgrade | Aktualisiert das bzw. die nachfolgend angegebene(n) Modul(e) auf die neuste Version. |
-r requirments.txt | Installiert alle Module, die in der Datei requirments.txt aufgeführt sind. Pro Zeile muss in der Datei ein Modulname stehen. |
--user | Installiert das bzw. die nachfolgend angegebene(n) Modul(e) lokal für den aktuellen Benutzer. Diese Option wird von pip implizit angenommen, wenn man das Programm ohne Root-Rechte aufruft. |
Eine Übersicht über die jeweiligen Optionen erhält man über den Aufruf
pip3 BEFEHL -h
also z.B.:
pip3 install -h
Eine komplette Übersicht findet man in den Man-Pages von pip.
Beispiele¶
Der folgende Befehl installiert das Modul "Markdown" lokal für den aktuellen Benutzer:
pip3 install markdown
Collecting markdown Downloading Markdown-2.6.11-py2.py3-none-any.whl (78kB) 100% |████████████████████████████████| 81kB 1.2MB/s Installing collected packages: markdown Successfully installed markdown-2.6.11
Die Deinstallation sieht so aus:
pip3 uninstall markdown
Uninstalling Markdown-2.6.11: /home/NUTZER/.local/bin/markdown_py /home/NUTZER/.local/lib/python3.5/site-packages/Markdown-2.6.11.dist-info/DESCRIPTION.rst ... /home/NUTZER/.local/lib/python3.5/site-packages/markdown/extensions/abbr.py ... /home/NUTZER/.local/lib/python3.5/site-packages/markdown/treeprocessors.py /home/NUTZER/.local/lib/python3.5/site-packages/markdown/util.py Proceed (y/n)? y Successfully uninstalled Markdown-2.6.11
Mit dem folgenden Befehl wird ein für den aktuellen Benutzer installiertes Modul aktualisiert, hier im Beispiel "Markdown":
pip3 install -U markdown
pip prüft dabei direkt, ob die Abhängigkeiten des Moduls ebenfalls aktuell sind. Sonst werden diese auch auf den neusten Stand gebracht. Ist das Modul systemweit installiert, dann muss die Option --user
weg gelassen werden.
Falls man neben dem Aktualisieren von "Markdown" gleich noch ein weiteres Modul mit installieren mögen würde, so sähe dies am Beispiel "streamlink" dann folgendermaßen aus:
pip3 install -U markdown streamlink
Man kann mit pip auch ein Modul gezielt in einer bestimmten Version installieren. Der folgende Befehl würde Django in der Version 1.11.18 installieren:
pip install django==1.11.18
Würde man anschließend pip install -U django
aufrufen, dann würde immer auf die aktuellste Version aktualisiert (also z.B. 4.0.3) und nicht "nur" auf die nächste Minor-Version (also z.B. 1.11.19).
Der folgende Befehl zeigt alle installierten Python-Module – auch die, die über die Paketverwaltung von Ubuntu systemweit installiert wurden:
pip3 list
-lxc (0.1) apt-xapian-index (0.47) apturl (0.5.2) beautifulsoup4 (4.4.1) ... unity-scope-yelp (0.1) unity-scope-zotero (0.1) urllib3 (1.22) usb-creator (0.3.0) virtualenv (15.0.1) wheel (0.29.0) xdiagnose (3.8.4.1) xkit (0.0.0) XlsxWriter (0.7.3)
Möchte man nur die für den aktuellen Benutzer lokal installierten Module anzeigen, dann lautet der Befehl
pip3 list --user
Wie bereits in der Einleitung erwähnt, kann pip auch Module direkt aus einem Versionskontrollsystem herunterladen. Im folgenden Beispiel wird die aktuelle Version von Jinja2: direkt aus dem Git-Repositry lokal installiert:
pip3 install https://github.com/pallets/jinja/archive/master.zip
Details dazu findet man in der offiziellen Dokumentation 🇬🇧.
Wer mehrere Module auf ein Mal installieren möchte, der kann entweder bei install
alle angegeben, zwischen den Modulnamen muss lediglich ein Leerzeichen stehen. Oder man kann eine einfache Text-Datei anlegen, in den die Modulnamen aufgeführt sind. Sieht die Datei Namens requirements.txt z.B. so aus:
markdown jinja2 howdoi
dann würde der Befehl
pip3 install -r requirements.txt
die Module Markdown, jinja2 und howdoi lokal installieren. Dies würde auch für die Deinstallation mit dem Befehl uninstall
funktionieren.
Tipps & Tricks¶
Alle Python-Pakete mit pip auf einmal aktualisieren¶
Möchte man mittels pip alle lokalen Python-Pakete aktualisieren, so kann man sich mit folgender Befehlskette – welche neben pip noch aus grep, cut und xargs besteht – behelfen:
pip3 freeze --user | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U
Manuelle Deinstallation¶
Hat man die Paketverwaltung pip manuell mit dem Script get-pip.py installiert, kann man diese mit folgendem Befehl wieder deinstallieren.
sudo python3 -m pip uninstall pip
Da bei der Installation automatisch auch (wenn noch nicht vorhanden) die Python Setuptools installiert werden, kann man den Befehl noch mit setuptools
erweitern, falls man die setuptools nicht benötigt:
sudo python3 -m pip uninstall pip setuptools
Links¶
Alle Python-Pakete mit pip aktualisieren 🇩🇪
Upgrading all packages with pip 🇬🇧 – Zugehöriger Artikel
offizielle Dokumentation 🇬🇧 zu pip
Python Übersichtsartikel