Bonnes pratiques Python
Sécuriser son environnement et ses dépendances avec pipx
pipx = venv + pip
Notions théoriques
Développer en Python implique souvent d’installer des bibliothèques tierces pour enrichir ses projets.
Cependant, ces installations peuvent présenter des risques si elles ne sont pas bien maîtrisées.
Pourquoi sécuriser son environnement Python ?
- Isolation des projets : Chaque projet peut nécessiter des versions différentes de bibliothèques. Installer toutes ces versions dans le même environnement peut causer des conflits.
- Sécurité des paquets : Certains paquets peuvent contenir du code malveillant ou vulnérable. Il est important de limiter leur portée.
- Préservation du système : Installer des paquets avec les droits administrateur peut modifier des fichiers sensibles du système.
Qu'est-ce que pip ?
pip est le gestionnaire de paquets officiel pour Python.
pip permet d’installer, de mettre à jour et de désinstaller des bibliothèques Python.
pip est souvent utilisé pour gérer les dépendances d’un projet Python.
Installer des paquets directement avec pip dans l’environnement système peut provoquer des conflits ou exposer l’ordinateur à des paquets malveillants.
L’installation de paquets avec sudo pip peut corrompre le système en modifiant des fichiers critiques.
Qu'est-ce que pipx ?
pipx est un outil qui permet d’installer et d’exécuter des applications Python dans des environnements isolés.
Contrairement à
pip,pipxn’installe pas les paquets dans le système global, mais crée un environnement virtuel pour chaque outil.
pipx est particulièrement utile pour les outils en ligne de commande (CLI) écrits en Python, car il permet de les installer sans polluer l’environnement global.
Avantages de pipx :
- Isolation automatique dans un environnement virtuel
- Installation globale des outils sans polluer le système
- Mise à jour facile des outils installés
- Suppression simple et propre
Exemples d’outils à installer avec pipx :
httpie: outil de requêtes HTTP en ligne de commandeblack: formateur de code Pythonpyright: analyseur statique de code Pythoncookiecutter: générateur de projets
Qu'est-ce qu'un environnement virtuel ?
Un environnement virtuel est un espace isolé dans lequel vous pouvez installer des paquets Python sans affecter le reste de votre système.
Cela permet d’éviter les conflits entre différentes versions de bibliothèques et de garder votre système propre.
Un environnement virtuel est créé à l’aide de la commande :
python -m venv nom_de_l_environnement.
Une fois créé, vous devez l’activer pour l’utiliser :
source nom_de_l_environnement/bin/activatesur Linux/Mac- ou
nom_de_l_environnement\Scripts\activatesur Windows.
Pourquoi utiliser un environnement virtuel ?
L’utilisation d’un environnement virtuel est essentielle pour plusieurs raisons :
- Isolation : Chaque projet peut avoir ses propres dépendances sans interférer avec d’autres projets.
- Gestion des versions : Vous pouvez installer des versions spécifiques de bibliothèques pour chaque projet.
- Facilité de déploiement : Vous pouvez facilement reproduire l’environnement de développement sur un serveur ou une autre machine.
- Sécurité : En isolant les dépendances, vous réduisez le risque d’introduire des vulnérabilités dans votre système.
Comparaison venv, pip et pipx
| Critère | venv | pip | pipx |
|---|---|---|---|
| Rôle principal | Créer un environnement virtuel isolé | Installer des paquets Python | Installer et exécuter des outils Python CLI isolés |
| Type d’outil | Outil de gestion d’environnement | Gestionnaire de paquets | Gestionnaire d’outils CLI Python |
| Installation par défaut avec Python | Oui (depuis Python 3.3) | Oui (depuis Python 3.4) | Non (doit être installé séparément) |
| Crée un environnement virtuel ? | Oui | Non | Oui (automatiquement pour chaque outil) |
| Utilisation typique | Isoler les dépendances d’un projet | Installer des bibliothèques dans un projet | Installer des outils CLI de manière globale et isolée |
| Installation dans l’environnement global ? | Non (environnement local au projet) | Oui (par défaut, sauf si dans un venv) | Non (chaque outil a son propre venv) |
| Cible principale | Projets Python | Bibliothèques et dépendances | Outils en ligne de commande (CLI) écrits en Python |
| Exemples d’utilisation | python -m venv monenv | pip install requests | pipx install black |
| Peut être combiné avec les autres ? | Oui (souvent utilisé avec pip) | Oui (dans ou hors d’un venv) | Non nécessairement, pipx gère l’isolation automatiquement |
| Sécurité | Isole les dépendances d’un projet | Risque de polluer le système si mal utilisé | Isole chaque outil pour éviter les conflits |
Bonnes pratiques avec pipx
- Installer pipx : Utilisez
python3 -m pip install --user pipxpour l’installer. - Ajouter pipx au PATH : Exécutez
python3 -m pipx ensurepathpour ajouter pipx à votre chemin d’exécution. - Installer des outils : Utilisez
pipx install nom_de_l_outilpour installer des outils Python. - Mettre à jour des outils : Utilisez
pipx upgrade nom_de_l_outilpour mettre à jour un outil installé. - Supprimer des outils : Utilisez
pipx uninstall nom_de_l_outilpour désinstaller un outil. - Lister les outils installés : Utilisez
pipx listpour voir tous les outils installés. - Exécuter un outil temporairement : Utilisez
pipx run nom_de_l_outilpour exécuter un outil sans l’installer.
Autres bonnes pratiques de développement sécurisé
- Utiliser un environnement virtuel (
venv) pour chaque projet. - Analyser les dépendances avec des outils comme
safetyoupip-audit. - Figer les versions des dépendances dans un fichier
requirements.txt. - Éviter d’exécuter du code téléchargé sans le lire.
- Vérifier la source des paquets (ne pas se fier uniquement au nom du paquet).
Exemple pratique
Il est possible de sécuriser l’installation d’un outil Python en utilisant pipx.