So installieren Sie Python-Anwendungen in isolierten Umgebungen mit pipx
Wenn Sie mit Python vertraut sind, haben Sie sicherlich pip verwendet: das Python-Paketinstallationsprogramm. Mit pip können wir Pakete „global“ oder in virtuellen Umgebungen installieren. Virtuelle Umgebungen werden hauptsächlich dazu verwendet, Abhängigkeiten bestimmter Projekte zu installieren, also isoliert zu entwickeln. Normalerweise installieren wir Pakete „global“, wenn wir von überall auf die von ihnen bereitgestellten Dienstprogramme zugreifen möchten. Durch die Verwendung von pipx können wir das Beste aus beiden Ansätzen herausholen: Wir können jede Anwendung in ihrer eigenen virtuellen Umgebung installieren und gleichzeitig global darauf zugreifen.
In diesem Tutorial erfahren Sie, wie Sie pipx auf einigen der am häufigsten verwendeten Linux-Distributionen installieren und wie Sie damit Python-Anwendungen in isolierten Umgebungen installieren und ausführen.
In diesem Tutorial lernen Sie:
- So installieren Sie pipx auf den gängigsten Linux-Distributionen
- So verwenden Sie pipx zum Installieren und Ausführen von Python-Anwendungen in isolierten Umgebungen
- So führen Sie Anwendungen vorübergehend aus
- So aktualisieren, listen und entfernen Sie Pakete
Installation
Pipx wird aktiv auf Github entwickelt und ist in den offiziellen Repositories aller am häufigsten verwendeten Linux-Distributionen verpackt und verfügbar. Um pipx auf Fedora zu installieren, können wir Folgendes ausführen:
$ sudo dnf install pipx
Auf Debian und Debian-basierten Distributionen können wir die Installation stattdessen mit apt
durchführen:
$ sudo apt install pipx
Unter Archlinux können wir das Paket mit pacman
installieren:
$ sudo pacman -S python-pipx
Da pipx selbst ein Python-Paket ist, kann es auch mit pip
installiert werden:
$ pip install pipx --user
Warum pipx?
Warum sollte man pipx verwenden? Welches Problem löst es? Durch die Verwendung von pipx erhalten wir die Möglichkeit, Pakete automatisch in ihren eigenen virtuellen Umgebungen zu installieren und gleichzeitig die von ihnen bereitgestellten Dienstprogramme von überall im System aus zu starten. Pipx wurde speziell für die Installation von Paketen entwickelt, die eine oder mehrere Befehlszeilen- oder grafische Dienstprogramme bereitstellen. Es ermöglicht uns sogar, Anwendungen „vorübergehend“ auszuführen und sie so lange auf dem System zu belassen, bis sie beendet werden.
Anwendungen mit pipx installieren
Wenn ein Paket keine ausführbare Datei enthält, lehnt pipx die Installation ab. Nehmen wir zum Beispiel an, wir möchten eine Webseite mithilfe der BeautifulSoup-Bibliothek crawlen. Wenn wir versuchen, das „bs4“-Paket zu installieren, antwortet pipx folgendermaßen:
$ pipx install bs4
No apps associated with package bs4 or its dependencies. If you are attempting to
install a library, pipx should not be used. Consider using pip or a similar tool instead.
Die Botschaft ist ziemlich klar, nicht wahr? Lass es uns erneut versuchen. Dieses Mal werden wir versuchen, das Paket „ansible-core“ zu installieren, das Ansible-Kerndienstprogramme wie ansible-playbook, ansible-console und ansible-vault enthält:
$ pipx install ansible-core
installed package ansible-core 2.15.2, installed using Python 3.11.4
These apps are now globally available
- ansible
- ansible-config
- ansible-connection
- ansible-console
- ansible-doc
- ansible-galaxy
- ansible-inventory
- ansible-playbook
- ansible-pull
- ansible-test
- ansible-vault
done! ✨ 🌟 ✨
Wie erwartet hat dieses Mal alles korrekt funktioniert. Wie in der Meldung angegeben, sind die im Paket enthaltenen Dienstprogramme nun weltweit verfügbar. Wo hat pipx das Paket installiert? Pipx installiert Pakete zusammen mit ihren Abhängigkeiten in ihren eigenen virtuellen Umgebungen im Verzeichnis ~/.local/pipx/venvs
. In unserem Fall können wir sehen, dass nur die Ansible-Core-Umgebung existiert:
$ ls -l ~/.local/pipx/venvs
total 4
drwxr-xr-x. 5 doc doc 4096 Jul 31 16:10 ansible-core
Um die von einem Paket bereitgestellten Dienstprogramme global zugänglich zu machen, werden Links im Verzeichnis ~/.local/bin
erstellt. Tatsächlich können wir sehen, dass nach der Installation des Pakets „ansible-core“ das Verzeichnis ~/.local/bin
symbolische Links enthält, die auf ausführbare Dateien in der virtuellen Umgebung verweisen:
$ ls ~/.local/bin -l
total 16
lrwxrwxrwx. 1 doc doc 52 Jul 31 16:10 ansible -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible
lrwxrwxrwx. 1 doc doc 59 Jul 31 16:10 ansible-config -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-config
lrwxrwxrwx. 1 doc doc 63 Jul 31 16:10 ansible-connection -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-connection
lrwxrwxrwx. 1 doc doc 60 Jul 31 16:10 ansible-console -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-console
lrwxrwxrwx. 1 doc doc 56 Jul 31 16:10 ansible-doc -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-doc
lrwxrwxrwx. 1 doc doc 59 Jul 31 16:10 ansible-galaxy -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-galaxy
lrwxrwxrwx. 1 doc doc 62 Jul 31 16:10 ansible-inventory -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-inventory
lrwxrwxrwx. 1 doc doc 61 Jul 31 16:10 ansible-playbook -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-playbook
lrwxrwxrwx. 1 doc doc 57 Jul 31 16:10 ansible-pull -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-pull
lrwxrwxrwx. 1 doc doc 57 Jul 31 16:10 ansible-test -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-test
lrwxrwxrwx. 1 doc doc 58 Jul 31 16:10 ansible-vault -> /home/doc/.local/pipx/venvs/ansible-core/bin/ansible-vault
Beachten Sie, dass kein --user
-Flag bereitgestellt wurde, um anzugeben, dass wir Pakete für einen bestimmten Benutzer installieren möchten: Dies ist das Standardverhalten von pipx.
Eine Anwendung vorübergehend ausführen
Mit pipx haben wir die Möglichkeit, eine Anwendung vorübergehend auszuführen: Mit dem Unterbefehl run
wird das entsprechende Paket in einer temporären virtuellen Umgebung installiert; Die Anwendung wird dann gestartet und automatisch entfernt, sobald sie beendet wird. Wenn das Dienstprogramm, das wir ausführen möchten, denselben Namen hat wie das Paket, das es bereitstellt, können wir einfach Folgendes ausführen:
$ pipx run <utility-name>
Wenn ein Paket mehrere ausführbare Dateien enthält, müssen wir stattdessen, wie im Fall des „ansible-core“-Pakets, das wir im vorherigen Beispiel installiert haben, die Option --spec
verwenden, um den Paketnamen anzugeben. und geben Sie dann den Befehl an, den wir ausführen möchten. Angenommen, wir möchten „ansible“ und das Modul „gather_facts“ verwenden, um Informationen über localhost abzurufen. Wir würden Folgendes ausführen:
$ pipx run --spec ansible-core ansible -m gather_facts localhost
Auflistung der installierten Pakete
Um die über pipx installierten Pakete aufzulisten, können wir den Unterbefehl „list“ verwenden:
$ pipx list
venvs are in /home/doc/.local/pipx/venvs
apps are exposed on your $PATH at /home/doc/.local/bin
package ansible-core 2.15.2, installed using Python 3.11.4
- ansible
- ansible-config
- ansible-connection
- ansible-console
- ansible-doc
- ansible-galaxy
- ansible-inventory
- ansible-playbook
- ansible-pull
- ansible-test
- ansible-vault
Wie Sie sehen können, meldet die Ausgabe des Befehls, wo virtuelle Umgebungen installiert und Dienstprogramme verknüpft sind.
Pakete aktualisieren
Bei der Verwendung von pipx haben wir die Möglichkeit, ein einzelnes Paket oder alle Pakete gleichzeitig zu aktualisieren. In unserem Fall würden wir Folgendes ausführen, um nur das Paket „ansible-core“ zu aktualisieren:
$ pipx upgrade ansible-core
Um stattdessen alle installierten Pakete zu aktualisieren:
$ pipx upgrade-all
Pakete entfernen
Da jedes Paket in seiner eigenen virtuellen Umgebung installiert wird, kann es zusammen mit allen seinen Abhängigkeiten problemlos und sauber vom System entfernt werden. Der Befehl, mit dem wir diese Aufgabe erledigen können, lautet: „uninstall“. In unserem Fall würden wir zum Deinstallieren des „ansible-core“-Pakets von unserem System Folgendes ausführen:
$ pipx uninstall picard
Schlussfolgerungen
In diesem Tutorial haben wir gelernt, wie man Python-Anwendungen mit pipx in isolierten Umgebungen installiert und ausführt. Pipx ist darauf ausgelegt, nur Python-Pakete zu installieren, die eine oder mehrere ausführbare Dateien verfügbar machen. Pakete und ihre Abhängigkeiten werden in ihren eigenen virtuellen Umgebungen installiert; Links zu den von ihnen bereitgestellten Dienstprogrammen werden dann in einem Verzeichnis im Benutzer-PATH erstellt, sodass sie global ausgeführt werden können.