Website-Suche

So installieren Sie Python-Anwendungen in isolierten Umgebungen mit pipx


Wenn Sie mit Python vertraut sind, haben Sie sicherlich pip verwendet: den Python-Paketinstaller. Mit pip können wir Pakete "global" oder in virtuellen Umgebungen installieren. Virtuelle Umgebungen werden hauptsächlich verwendet, um Abhängigkeiten bestimmter Projekte zu installieren, um sie also isoliert zu entwickeln. Normalerweise installieren wir Pakete stattdessen "global", wenn wir von überall aus auf die von ihnen bereitgestellten Dienstprogramme zugreifen möchten. Durch den Einsatz 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 sehen wir, wie man pipx auf einigen der am häufigsten verwendeten Linux-Distributionen installiert und wie man es verwendet, um Python-Anwendungen in isolierten Umgebungen zu installieren und auszufü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
  • Temporäres Ausführen von Anwendungen
  • Aktualisieren, Auflisten und Entfernen von Paketen

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 entwickelt, um Pakete zu installieren, die ein oder mehrere Befehlszeilen- oder grafische Dienstprogramme verfügbar machen. Es ermöglicht uns sogar, Anwendungen "temporär" auszuführen und sie nur so lange auf dem System zu halten, bis sie beendet werden.

Installieren von Anwendungen mit pipx

Wenn ein Paket keine ausführbare Datei enthält, weigert sich pipx, es zu installieren. Nehmen wir zum Beispiel an, wir möchten eine Webseite mit der BeautifulSoup-Bibliothek scrapen. Wenn wir versuchen, das Paket "bs4" zu installieren, reagiert 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? Versuchen wir es noch einmal. Dieses Mal werden wir versuchen, das Paket "ansible-core" zu installieren, das Ansible-Core-Dienstprogramme 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 funktionierte diesmal alles korrekt. Wie in der Nachricht angegeben, sind die im Paket enthaltenen Dienstprogramme nun global verfügbar. Wo hat pipx das Paket installiert? Pipx installiert Pakete zusammen mit ihren Abhängigkeiten in ihren eigenen virtuellen Umgebungen unter dem 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 Verknüpfungen im Verzeichnis ~/.local/bin erstellt. In der Tat können wir sehen, wie 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 wir kein --user-Flag angegeben haben, um anzugeben, dass wir Pakete für einen bestimmten Benutzer installieren möchten: Dies ist das Standardverhalten von pipx.

Temporäres Ausführen einer Anwendung

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, den gleichen Namen wie das Paket hat, 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 dann den Befehl angeben, 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 laufen:

pipx run --spec ansible-core ansible -m gather_facts localhost

Auflisten installierter 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 wo Dienstprogramme verknüpft sind.

Aktualisieren von Paketen

Bei der Verwendung von pipx haben wir die Möglichkeit, ein einzelnes Paket oder alle Pakete auf einmal zu aktualisieren. In unserem Fall würden wir, um nur das Paket "ansible-core" zu aktualisieren, Folgendes ausführen:

pipx upgrade ansible-core

Um alle installierten Pakete zu aktualisieren, gehen Sie stattdessen wie folgt vor:

pipx upgrade-all

Entfernen von Paketen

Da jedes Paket in einer eigenen virtuellen Umgebung installiert wird, kann es zusammen mit all seinen Abhängigkeiten einfach und sauber aus dem System entfernt werden. Der Befehl, mit dem wir diese Aufgabe ausführen können, lautet: "uninstall ". In unserem Fall würden wir zur Deinstallation des Pakets "ansible-core" von unserem System Folgendes ausführen:

pipx uninstall picard

Schlüsse

In diesem Tutorial haben wir gelernt, wie man Python-Anwendungen in isolierten Umgebungen mit pipx installiert und ausführt. Pipx ist so konzipiert, dass nur Python-Pakete installiert werden, 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 Benutzerpfad erstellt, so dass sie global ausgeführt werden können.

Verwandte Artikel: