Aller au contenu
English
English
Développement medium

pipx : installer des outils Python isolés en toute simplicité

30 min de lecture

logo python

pipx installe et exécute des applications Python en ligne de commande (comme black, httpie ou poetry) dans des environnements virtuels isolés, un par outil, sans toucher à votre installation globale. Chaque outil est autonome : plus de conflits de dépendances entre vos projets, plus de pip install --user qui pollue le système.

Ce guide, pour développeurs débutants et intermédiaires, montre pourquoi installer des outils avec pip global pose problème, comment installer pipx et l'utiliser au quotidien.

  • Comprendre les risques de sudo pip install et pip install --user
  • Installer pipx sous Linux, macOS et Windows
  • Installer, exécuter et gérer des outils Python isolés
  • Exécuter un outil sans l'installer avec pipx run
  • Injecter des dépendances et choisir la version de Python d'un outil
  • Savoir ce que l'isolation protège, et ce qu'elle ne protège pas

Pourquoi tout installer avec pip est une mauvaise idée ?

Section intitulée « Pourquoi tout installer avec pip est une mauvaise idée ? »

L’installation des outils Python, comme Ansible, peut parfois tourner au cauchemar, surtout quand on jongle entre l’installation avec le compte root et celles faite avec son propre compte utilisateur. Mauvais droits, conflits de dépendances, accès refusés… Voyons les principaux problèmes et comment les éviter.

Utiliser le compte root : risqué et déconseillé

Section intitulée « Utiliser le compte root : risqué et déconseillé »

Quand on utilise sudo pip install pour installer un outil Python au niveau système, on peut se retrouver avec :

Un accès global à l’outil pour tous les utilisateurs. Des risques de conflits avec d’autres paquets installés par le gestionnaire de paquets du système d'exploitation. Un risque de casser Python : si un package système dépend d’une version spécifique d’un module et qu’on le met à jour avec pip, il peut devenir inutilisable.

Par exemple si vous faites :

Fenêtre de terminal
sudo pip install requests

Vous risquez de remplacer la version installée par apt et votre système peut ne plus fonctionner correctement.

Utiliser son compte utilisateur : des problèmes en perspective

Section intitulée « Utiliser son compte utilisateur : des problèmes en perspective »

Si vous installez des outils sans sudo avec pip install --user, vous pouvez rencontrer d’autres problèmes :

Le binaire n’est pas dans le PATH : Après installation, l’outil peut être introuvable car ~/.local/bin/ (sous Linux/macOS) ou %APPDATA%\Python\Scripts\ (sous Windows) n’est pas dans le $PATH.

Solution : Ajouter ~/.local/bin dans votre .bashrc :

Fenêtre de terminal
export PATH="$HOME/.local/bin:$PATH"

Impossible d’écraser une version installée en root : Si un outil a déjà été installé avec sudo pip install, la version utilisateur ne pourra pas la remplacer. Résultat : pip dit que tout est OK, mais l’ancien binaire est toujours utilisé.

Solution : Vérifier où est installé l’outil avec :

Fenêtre de terminal
which tool-name

Désinstaller la version root et réinstaller proprement avec pipx ou pip install --user.

Vous avez peut-être déjà utilisé pip pour installer des outils Python, mais Pipx fonctionne différemment. Son but ? Isoler chaque application dans un environnement dédié pour éviter les conflits de dépendances. Voyons en détail comment ça marche.

Quand vous installez un outil avec Pipx, il crée automatiquement un environnement virtuel indépendant. Contrairement à pip install --user, qui installe les paquets dans votre répertoire utilisateur, Pipx les place chacun dans leur propre dossier.

Fenêtre de terminal
pipx install black

Ce qu’il se passe en coulisses :

  1. Création d’un environnement virtuel :
    • Le dossier ~/.local/share/pipx/venvs/black/ est créé sous Linux et macOS. Si vous voyez encore ~/.local/pipx/venvs/, c'est une installation ancienne : pipx conserve ce chemin quand il existe déjà, mais ne le crée plus.
    • Sur Windows, ça ira dans %APPDATA%\pipx\venvs\black\.
  2. Installation de l’outil dans cet environnement avec pip.
  3. Ajout d’un lien symbolique dans ~/.local/bin/ (ou %APPDATA%\Python\Scripts\ sous Windows) pour exécuter black sans activer manuellement le venv.

Ainsi, chaque outil tourne dans un environnement isolé, sans interférer avec les autres.

L’installation de Pipx est simple et rapide, mais elle varie selon votre système d’exploitation. Que vous soyez sur Linux, macOS ou Windows, ce guide vous accompagne pas à pas pour mettre en place Pipx proprement.

  • Avec le gestionnaire de paquets (méthode recommandée)

C'est l'ordre que retient la documentation officielle, et pour une raison précise expliquée juste après :

Fenêtre de terminal
sudo apt install pipx # Debian, Ubuntu
sudo dnf install pipx # Fedora, RHEL et dérivés
pipx ensurepath
  • Avec pip, quand le paquet n'existe pas dans votre distribution
Fenêtre de terminal
python3 -m pip install --user pipx
python3 -m pipx ensurepath
# Sortie : le dossier des binaires pipx est ajouté au PATH.

ensurepath ajoute le dossier ~/.local/bin/ dans le $PATH, pour que vous puissiez exécuter les outils installés avec Pipx.

Si vous êtes sur macOS et que vous utilisez Homebrew :

Fenêtre de terminal
brew install pipx
pipx ensurepath

Dans PowerShell, lancez :

Fenêtre de terminal
python -m pip install --user pipx
python -m pipx ensurepath

Pipx est maintenant installé, mais pensez à redémarrer PowerShell pour que les modifications prennent effet.

Peu importe la méthode utilisée, vérifiez que pipx est bien installé en tapant :

Fenêtre de terminal
pipx --version

Si la commande fonctionne, c’est bon ! Sinon, votre $PATH n’est peut-être pas bien configuré.

Utiliser Pipx pour installer et exécuter des outils Python

Section intitulée « Utiliser Pipx pour installer et exécuter des outils Python »

Maintenant que Pipx est installé, voyons comment l’utiliser efficacement. Avec Pipx, vous pouvez installer, exécuter et gérer des outils Python en toute simplicité, sans vous soucier des conflits de dépendances.

Exécuter un outil temporairement sans l’installer

Section intitulée « Exécuter un outil temporairement sans l’installer »

Si vous voulez tester un outil sans l’installer définitivement, Pipx permet de l’exécuter directement avec pipx run :

Fenêtre de terminal
pipx run cowsay "Hello, Pipx!"

L'outil est téléchargé dans un environnement temporaire, exécuté, et cet environnement est conservé en cache pendant 14 jours. Rien n'apparaît dans pipx list, mais le second appel réutilise le cache au lieu de retélécharger.

Cette nuance a une conséquence pratique : une nouvelle version publiée entre-temps ne sera pas prise avant l'expiration du cache. Forcez-la avec pipx run --no-cache ou pipx run --refresh. Et si l'outil est volumineux ou utilisé souvent, préférez pipx install.

La commande de base pour installer un outil est :

Fenêtre de terminal
pipx install <nom_du_paquet>

Exemple : Installer l’outil httpie

Fenêtre de terminal
pipx install httpie

Vérifions que l’installation a bien fonctionné :

Fenêtre de terminal
http --version

Si la commande fonctionne, Pipx a bien installé et configuré l’outil !

Une fois installée, une application peut être exécutée normalement depuis le terminal, comme n’importe quelle commande.

Exemple : Utiliser httpie pour tester une API

Fenêtre de terminal
http https://api.github.com

L’avantage de Pipx : Pas besoin d’activer manuellement un venv, tout est déjà prêt !

Installer une version spécifique d’une application

Section intitulée « Installer une version spécifique d’une application »

Parfois, vous avez besoin d’une version particulière d’un outil. Pipx permet d’installer une version précise avec == :

Fenêtre de terminal
pipx install poetry==1.3.2

Très utile si une nouvelle version introduit un bug et que vous voulez revenir en arrière.

Pipx propose plusieurs commandes pour gérer les outils installés.

Fenêtre de terminal
pipx list

Cela affiche tous les outils gérés par Pipx et leur emplacement.

Fenêtre de terminal
pipx upgrade <nom_du_paquet>

Exemple : Mettre à jour poetry

Fenêtre de terminal
pipx upgrade poetry

Cela met à jour Poetry sans affecter les autres outils.

Mettre à jour toutes les applications d’un coup

Section intitulée « Mettre à jour toutes les applications d’un coup »
Fenêtre de terminal
pipx upgrade-all

Utile pour garder tous vos outils à jour !

Fenêtre de terminal
pipx uninstall <nom_du_paquet>

Exemple : Supprimer black

Fenêtre de terminal
pipx uninstall black

Cela supprime entièrement l’outil et son environnement virtuel.

Si un outil est corrompu ou ne fonctionne plus bien, vous pouvez le réinstaller :

Fenêtre de terminal
pipx reinstall <nom_du_paquet>

Cela supprime l’installation existante et réinstalle proprement l’outil.

Ajouter des dépendances supplémentaires à une application

Section intitulée « Ajouter des dépendances supplémentaires à une application »

Certains outils nécessitent des modules supplémentaires pour fonctionner correctement. Plutôt que d’utiliser pip, vous pouvez injecter des dépendances directement dans l’environnement de l’application :

Exemple : Ajouter requests à un outil installé avec Pipx

Fenêtre de terminal
pipx inject httpie requests

Cela installe requests dans l’environnement virtuel de httpie, sans affecter le reste du système.

Pour voir les dépendances injectées, utilisez :

Fenêtre de terminal
pipx list

Par défaut, Pipx utilise la version de Python installée sur votre système. Mais si un outil nécessite une version spécifique, vous pouvez lui dire d’utiliser une autre version de Python.

Exemple : Installer Poetry avec Python 3.10

Fenêtre de terminal
pipx install --python /usr/bin/python3.10 poetry

Si votre outil est déjà installé et que vous voulez changer sa version de Python installé avec pyenv :

Fenêtre de terminal
pipx reinstall-all --python /usr/bin/python3.10

Cela réinstalle toutes les applications Pipx avec la nouvelle version de Python.

pipx isole des dépendances, pas des privilèges. La distinction est la chose la plus importante de ce chapitre, et c'est aussi la plus souvent mal comprise.

Un environnement virtuel sépare les bibliothèques installées. Il ne crée ni utilisateur, ni namespace, ni bac à sable. Le programme lancé par pipx tourne avec vos droits, et peut donc lire tout ce que vous pouvez lire : vos clés SSH dans ~/.ssh, vos jetons dans ~/.aws/credentials ou ~/.docker/config.json, vos variables d'environnement, et l'ensemble de vos fichiers personnels. Un outil malveillant installé par pipx n'est pas contenu.

Ce que pipx apporte vraiment en matière de sécurité est plus modeste, mais réel :

Ce que pipx éviteCe que pipx n'évite pas
Un sudo pip install qui écrase un paquet du système avec les droits rootQu'un outil lise vos secrets utilisateur
Un outil qui impose sa version d'une bibliothèque à tous les autresQu'un outil ouvre une connexion réseau sortante
Une désinstallation qui laisse des dépendances orphelinesQu'un outil modifie vos fichiers

Pour vraiment confiner un outil, il faut un mécanisme du système d'exploitation : conteneur, bubblewrap, systemd-run avec des restrictions, ou un compte dédié. Le choix de ce qu'on installe reste donc le premier garde-fou.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • pipx installe chaque outil CLI dans son propre environnement virtuel, avec un lien dans le PATH : zéro conflit de dépendances.
  • pipx install <outil> installe durablement ; pipx run <outil> exécute une fois sans installer.
  • N'installez jamais un outil CLI avec sudo pip install : risque de casser le Python système.
  • Gérez avec pipx list, pipx upgrade, pipx upgrade-all, pipx uninstall, pipx reinstall.
  • pipx inject <outil> <paquet> ajoute une dépendance dans l'environnement d'un outil ; --python choisit la version de Python.
  • pipx isole des dépendances, pas des privilèges. Un outil lancé par pipx tourne avec vos droits et peut lire vos clés SSH, vos jetons et vos fichiers. Pour confiner réellement, il faut un conteneur ou un mécanisme du système.
  • pipx run met son environnement temporaire en cache 14 jours : il ne supprime rien après l'exécution, et ne reprend pas non plus la dernière version publiée sans --no-cache ou --refresh.

Les réponses courtes ci-dessous couvrent les questions les plus recherchées sur pipx.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens ce site gratuitement, sans publicité, sans profilage et sans compte à créer. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn