Comment installer des applications Python dans des environnements isolés avec pipx
Si vous êtes familier avec Python, vous avez sûrement utilisé pip : l’installateur de paquets Python. Avec pip, nous pouvons installer des paquets « globalement » ou dans des environnements virtuels. Les environnements virtuels sont principalement utilisés pour installer des dépendances de projets spécifiques, donc pour les développer de manière isolée. Nous installons généralement des paquets, « globalement », à la place, lorsque nous voulons accéder aux utilitaires qu’ils fournissent de n’importe où. En utilisant pipx, nous pouvons obtenir le meilleur des deux approches : nous pouvons installer chaque application dans son propre environnement virtuel et, en même temps, y accéder globalement.
Dans ce tutoriel, nous voyons comment installer pipx sur certaines des distributions Linux les plus utilisées, et comment l’utiliser pour installer et exécuter des applications Python dans des environnements isolés.
Dans ce tutoriel, vous allez apprendre :
- Comment installer pipx sur les distributions Linux les plus courantes
- Comment utiliser pipx pour installer et exécuter des applications Python dans des environnements isolés
- Comment exécuter des applications temporairement
- Comment mettre à niveau, répertorier et supprimer des packages
Installation
Pipx est activement développé sur Github, et est empaqueté et disponible dans les dépôts officiels de toutes les distributions Linux les plus utilisées. Pour installer pipx sur Fedora, nous pouvons exécuter :
sudo dnf install pipxSur Debian et les distributions basées sur Debian, en revanche, nous pouvons effectuer l’installation en utilisant apt :
sudo apt install pipxSur Archlinux, nous pouvons installer le paquet en utilisant pacman :
sudo pacman -S python-pipxÉtant donné que pipx est lui-même un paquet Python, il peut également être installé avec pip :
pip install pipx --userPourquoi pipx ?
Pourquoi devrait-on utiliser pipx ? Quel problème résout-il ? En utilisant pipx, nous avons la possibilité d’installer automatiquement des paquets dans leurs propres environnements virtuels, et en même temps de lancer les utilitaires qu’ils fournissent depuis n’importe où dans le système. Pipx est spécialement conçu pour installer des paquets qui exposent un ou plusieurs utilitaires graphiques en ligne de commande ; Il nous permet même d’exécuter des applications « temporairement », en les gardant sur le système jusqu’à ce qu’elles se terminent.
Installation d’applications avec pipx
Si un paquet ne contient aucun exécutable, pipx refusera de l’installer. Supposons, par exemple, que nous voulions gratter une page Web à l’aide de la bibliothèque BeautifulSoup. Si nous essayons d’installer le paquet « bs4 », pipx répond de cette façon :
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.Le message est assez clair, n’est-ce pas ? Réessayons. Cette fois, nous allons essayer d’installer le package « ansible-core », qui contient les utilitaires de base d’Ansible tels que ansible-playbook, ansible-console et ansible-vault :
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! ✨ 🌟 ✨
Comme prévu, cette fois-ci, tout a fonctionné correctement. Comme indiqué dans le message, les utilitaires contenus dans le paquet sont maintenant disponibles dans le monde entier. Où pipx a-t-il installé le paquet ? Pipx installe les paquets, ainsi que leurs dépendances, dans leurs propres environnements virtuels, sous le répertoire ~/.local/pipx/venvs. Dans notre cas, nous pouvons voir que seul l’environnement ansible-core existe :
ls -l ~/.local/pipx/venvs
total 4
drwxr-xr-x. 5 doc doc 4096 Jul 31 16:10 ansible-corePour rendre les utilitaires exposés par un paquet globalement accessibles, des liens sont créés dans le répertoire ~/.local/bin. En effet, on peut voir comment, après l’installation du paquet « ansible-core », le répertoire ~/.local/bin contient des liens symboliques pointant vers des exécutables dans l’environnement virtuel :
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
Observez comment n’a pas fourni d’indicateur --user pour spécifier que nous voulons installer des paquets pour un utilisateur spécifique : c’est le comportement par défaut de pipx.
Exécution d’une application temporaire
Avec pipx, nous avons la possibilité d’exécuter une application temporairement : en utilisant la sous-commande run, le paquet correspondant est installé dans un environnement virtuel temporaire ; L’application est alors lancée et automatiquement supprimée dès qu’elle se ferme. Lorsque l’utilitaire que nous voulons exécuter porte le même nom que le paquet qui le fournit, nous pouvons simplement exécuter :
pipx run <utility-name>Lorsqu’un paquet contient plusieurs exécutables, en revanche, comme dans le cas du paquet « ansible-core » que nous avons installé dans l’exemple précédent, nous devons utiliser l’option --spec pour spécifier le nom du paquet, puis spécifier la commande que nous voulons exécuter. Supposons que nous voulions utiliser « ansible » et le module « gather_facts » pour récupérer des informations sur localhost. Nous courrions :
pipx run --spec ansible-core ansible -m gather_facts localhostListe des paquets installés
Afin de lister les paquets installés via pipx, nous pouvons utiliser la sous-commande « list » :
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-vaultComme vous pouvez le voir, le résultat de la commande indique où les environnements virtuels sont installés et où les utilitaires sont liés.
Mise à niveau des packages
En utilisant pipx, nous avons la possibilité de mettre à jour un seul paquet ou tous les paquets à la fois. Dans notre cas, pour mettre à jour uniquement le package « ansible-core », nous exécuterions :
pipx upgrade ansible-corePour mettre à niveau tous les paquets installés, procédez plutôt comme suit :
pipx upgrade-allSuppression de paquets
Étant donné que chaque paquet est installé dans son propre environnement virtuel, il peut être facilement supprimé du système de manière propre, avec toutes ses dépendances. La commande qui nous permet d’accomplir cette tâche est : « désinstaller ». Dans notre cas, pour désinstaller le paquet « ansible-core » de notre système, nous exécuterions :
pipx uninstall picardConclusions
Dans ce tutoriel, nous avons appris à installer et à exécuter des applications Python dans des environnements isolés à l’aide de pipx. Pipx est conçu pour installer uniquement des packages Python qui exposent un ou plusieurs exécutables. Les packages et leurs dépendances sont installés dans leurs propres environnements virtuels ; les liens vers les utilitaires qu’ils fournissent sont ensuite créés à l’intérieur d’un répertoire dans le PATH de l’utilisateur, afin qu’ils puissent être exécutés globalement.
