
Vous travaillez sur deux projets Python : l’un utilise Django 3.2, l’autre Django 4.2. Sans isolation, installer la nouvelle version écraserait l’ancienne et casserait votre premier projet. Les environnements virtuels résolvent ce problème en créant un espace isolé pour chaque projet, avec ses propres versions de packages.
Un environnement virtuel est un dossier contenant une copie de Python et un espace dédié pour les packages. Quand vous l’activez, toutes les commandes pip install n’affectent que cet environnement — votre système reste intact, vos autres projets aussi.
Ce guide vous montre comment créer, utiliser et gérer des environnements virtuels avec venv (l’outil intégré à Python), puis explore les alternatives comme pipenv et uv.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »Ce guide couvre tout le cycle de vie des environnements virtuels Python. Chaque section est accompagnée de commandes que vous pouvez exécuter immédiatement.
À la fin de ce guide, vous saurez :
- Comprendre le problème des conflits de dépendances et pourquoi l’isolation est nécessaire
- Créer un environnement virtuel avec
venven une commande - Activer et désactiver l’environnement selon votre système d’exploitation
- Installer des packages de manière isolée avec
pip - Gérer les dépendances avec
requirements.txtpour des environnements reproductibles - Choisir la bonne alternative entre venv, virtualenv, pipenv et uv
Pourquoi utiliser un environnement virtuel ?
Section intitulée « Pourquoi utiliser un environnement virtuel ? »Le problème des conflits de dépendances
Section intitulée « Le problème des conflits de dépendances »Sans environnement virtuel, tous vos projets Python partagent les mêmes packages installés globalement. Voici ce qui peut mal tourner :
| Situation | Problème | Conséquence |
|---|---|---|
Projet A utilise requests==2.25 | Projet B a besoin de requests==2.31 | L’un des deux projets casse |
| Vous testez une nouvelle version de Flask | L’ancien projet n’est plus compatible | Régression en production |
| Vous collaborez avec un collègue | Ses versions diffèrent des vôtres | ”Ça marche sur ma machine” |
| Vous déployez en production | Le serveur a d’autres versions | Erreurs imprévisibles |
La solution : l’isolation
Section intitulée « La solution : l’isolation »Avec un environnement virtuel, chaque projet a son propre espace :
Avantages concrets :
- Pas de conflits — chaque projet a ses propres versions de packages
- Reproductibilité — exportez
requirements.txtet recréez l’environnement identique ailleurs - Sécurité — tester une nouvelle version ne risque pas de casser d’autres projets
- Propreté — supprimez un projet = supprimez son environnement, rien ne traîne
Créer un environnement virtuel avec venv
Section intitulée « Créer un environnement virtuel avec venv »Le module venv est intégré à Python depuis la version 3.3. Pas besoin d’installer quoi que ce soit.
Étape 1 : Vérifier Python
Section intitulée « Étape 1 : Vérifier Python »Avant de commencer, vérifiez que Python 3.3+ est installé :
python3 --versionSortie attendue : Python 3.11.6 (ou version supérieure)
Étape 2 : Créer l’environnement
Section intitulée « Étape 2 : Créer l’environnement »Dans le dossier de votre projet, exécutez :
python3 -m venv .venvCette commande crée un dossier .venv contenant :
| Dossier/Fichier | Contenu |
|---|---|
bin/ (Linux/macOS) ou Scripts/ (Windows) | Exécutables Python et scripts d’activation |
lib/ | Packages installés dans cet environnement |
include/ | Fichiers d’en-tête pour les extensions C |
pyvenv.cfg | Configuration de l’environnement |
Étape 3 : Vérifier la création
Section intitulée « Étape 3 : Vérifier la création »Listez le contenu du dossier créé :
ls -la .venv/Vous devez voir les dossiers bin/, lib/, include/ et le fichier pyvenv.cfg.
Activer l’environnement virtuel
Section intitulée « Activer l’environnement virtuel »Créer l’environnement ne l’active pas automatiquement. L’activation modifie votre terminal pour utiliser le Python de l’environnement au lieu du Python global.
Commandes d’activation par système
Section intitulée « Commandes d’activation par système »source .venv/bin/activateAlternative avec point :
. .venv/bin/activate.venv\Scripts\Activate.ps1Si vous avez une erreur de politique d’exécution :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser.venv\Scripts\activate.batComment savoir si l’environnement est actif ?
Section intitulée « Comment savoir si l’environnement est actif ? »Après activation, votre prompt change pour afficher le nom de l’environnement :
# Avant activationuser@machine:~/mon-projet$
# Après activation(.venv) user@machine:~/mon-projet$Vérification supplémentaire : la commande which python (Linux/macOS) ou where python (Windows) doit pointer vers .venv/bin/python :
which pythonDésactiver l’environnement
Section intitulée « Désactiver l’environnement »Quand vous avez terminé de travailler sur le projet :
deactivateLe prompt redevient normal et les commandes python et pip utilisent à nouveau l’installation globale.
Installer des packages avec pip
Section intitulée « Installer des packages avec pip »Une fois l’environnement activé, pip installe les packages uniquement dans cet environnement.
Installer un package
Section intitulée « Installer un package »pip install requestsCette commande :
- Télécharge le package
requestsdepuis PyPI - L’installe dans
.venv/lib/python3.x/site-packages/ - Installe automatiquement ses dépendances (
urllib3,certifi, etc.)
Installer une version spécifique
Section intitulée « Installer une version spécifique »Pour garantir la compatibilité, spécifiez une version exacte :
pip install requests==2.31.0Syntaxes de version disponibles :
| Syntaxe | Signification |
|---|---|
requests==2.31.0 | Version exacte |
requests>=2.28.0 | Version minimale |
requests>=2.28,<3.0 | Plage de versions |
requests~=2.31.0 | Compatible avec 2.31.x |
Lister les packages installés
Section intitulée « Lister les packages installés »pip listSortie exemple :
Package Version------------------ ---------certifi 2023.11.17charset-normalizer 3.3.2idna 3.6pip 23.3.1requests 2.31.0urllib3 2.1.0Mettre à jour un package
Section intitulée « Mettre à jour un package »pip install --upgrade requestsDésinstaller un package
Section intitulée « Désinstaller un package »pip uninstall requestsConfirmez avec y quand demandé.
Gérer les dépendances avec requirements.txt
Section intitulée « Gérer les dépendances avec requirements.txt »Le fichier requirements.txt liste toutes les dépendances de votre projet. Il permet de recréer un environnement identique sur une autre machine.
Exporter les dépendances actuelles
Section intitulée « Exporter les dépendances actuelles »pip freeze > requirements.txtContenu généré :
certifi==2023.11.17charset-normalizer==3.3.2idna==3.6requests==2.31.0urllib3==2.1.0Installer depuis requirements.txt
Section intitulée « Installer depuis requirements.txt »Sur une nouvelle machine ou après avoir cloné un projet :
-
Créer un environnement virtuel
Fenêtre de terminal python3 -m venv .venv -
Activer l’environnement
Fenêtre de terminal source .venv/bin/activate -
Installer les dépendances
Fenêtre de terminal pip install -r requirements.txt
Toutes les dépendances sont installées avec les versions exactes spécifiées.
Bonnes pratiques pour requirements.txt
Section intitulée « Bonnes pratiques pour requirements.txt »1. Séparez les dépendances directes des indirectes
Créez deux fichiers :
requirements.in— packages que vous utilisez directementrequirements.txt— généré parpip freeze, inclut les dépendances transitives
2. Versionnez requirements.txt dans Git
git add requirements.txtgit commit -m "Ajout des dépendances du projet"3. Gardez les versions à jour
Périodiquement, vérifiez les mises à jour de sécurité :
pip list --outdatedSupprimer un environnement virtuel
Section intitulée « Supprimer un environnement virtuel »Un environnement virtuel est un simple dossier. Pour le supprimer :
rm -rf .venvrmdir /s /q .venvStructure d’un projet Python typique
Section intitulée « Structure d’un projet Python typique »Voici comment organiser un projet Python avec environnement virtuel :
mon-projet/├── .venv/ # Environnement virtuel (exclu de Git)├── .gitignore # Inclut .venv/├── requirements.txt # Dépendances├── src/ # Code source│ ├── __init__.py│ └── main.py├── tests/ # Tests│ └── test_main.py└── README.mdContenu minimal de .gitignore :
# Environnement virtuel.venv/venv/env/
# Cache Python__pycache__/*.pyc*.pyo
# pippip-log.txtAlternatives à venv
Section intitulée « Alternatives à venv »venv convient à la majorité des projets, mais d’autres outils offrent des fonctionnalités supplémentaires.
Comparatif des outils
Section intitulée « Comparatif des outils »| Outil | Points forts | Cas d’usage |
|---|---|---|
| venv | Intégré à Python, simple | Projets standards |
| virtualenv | Compatible Python 2, plus rapide | Legacy, CI/CD |
| pipenv | Pipfile.lock, gestion intégrée | Équipes, reproductibilité |
| uv | Ultra-rapide (Rust), compatible pip | Projets modernes, CI/CD |
| conda | Packages non-Python, data science | ML, calcul scientifique |
virtualenv
Section intitulée « virtualenv »Plus ancien que venv, mais supporte Python 2 et crée les environnements plus rapidement.
pip install virtualenvvirtualenv .venvsource .venv/bin/activateCombine environnement virtuel et gestion des dépendances dans un seul outil. Utilise Pipfile au lieu de requirements.txt.
pip install pipenvpipenv install requests # Crée l'env et installe le packagepipenv shell # Active l'environnementFichiers générés :
Pipfile— dépendances lisiblesPipfile.lock— versions exactes verrouillées
uv (recommandé pour les nouveaux projets)
Section intitulée « uv (recommandé pour les nouveaux projets) »Outil moderne écrit en Rust, 10 à 100 fois plus rapide que pip pour l’installation de packages.
# Installation de uvcurl -LsSf https://astral.sh/uv/install.sh | sh
# Créer un environnement et installer des packagesuv venvsource .venv/bin/activateuv pip install requestsAvantages de uv :
- Compatible avec
requirements.txtetpyproject.toml - Résolution de dépendances déterministe
- Cache global partagé entre projets
pipx : installer des outils CLI globaux
Section intitulée « pipx : installer des outils CLI globaux »Certains outils Python sont des CLI globaux (black, flake8, httpie…) que vous voulez utiliser partout, pas dans un projet spécifique.
Problème : les installer avec pip globalement peut créer des conflits.
Solution : pipx installe chaque outil dans son propre environnement isolé, tout en rendant la commande disponible globalement.
# Installer pipxpip install pipxpipx ensurepath
# Installer des outils globaux isoléspipx install blackpipx install httpiepipx install poetry
# Utiliser l'outil n'importe oùblack --versionhttp https://api.github.comDépannage
Section intitulée « Dépannage »L’environnement ne s’active pas
Section intitulée « L’environnement ne s’active pas »| Symptôme | Cause probable | Solution |
|---|---|---|
source: not found | Shell non compatible | Utilisez bash ou . .venv/bin/activate |
| Erreur PowerShell | Politique d’exécution | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
| Pas de changement de prompt | Activation échouée silencieusement | Vérifiez que .venv/bin/activate existe |
pip installe globalement malgré l’activation
Section intitulée « pip installe globalement malgré l’activation »# Vérifier quel pip est utiliséwhich pip# Si ce n'est pas le cas, utilisez explicitement.venv/bin/pip install requestsConflit de versions lors de l’installation
Section intitulée « Conflit de versions lors de l’installation »# Voir les dépendances en conflitpip check
# Forcer la réinstallation des dépendancespip install --force-reinstall -r requirements.txtL’environnement est corrompu
Section intitulée « L’environnement est corrompu »Parfois, après une mise à jour de Python système, l’environnement ne fonctionne plus :
# Solution : recréer l'environnementrm -rf .venvpython3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txtÀ retenir
Section intitulée « À retenir »Si vous ne retenez que six choses de ce guide, retenez celles-ci :
-
Toujours utiliser un environnement virtuel — même pour un petit projet. C’est 10 secondes qui évitent des heures de débogage.
-
Convention
.venv— nommez votre environnement.venvdans le dossier du projet, il sera automatiquement ignoré par Git. -
Activer avant d’installer — vérifiez que
(.venv)apparaît dans votre prompt avant toutpip install. -
requirements.txtpour la reproductibilité — exportez avecpip freeze > requirements.txtet versionnez ce fichier. -
deactivatepour sortir — simple mais souvent oublié. Votre prompt redevient normal. -
Supprimer = supprimer le dossier — pas de désinstallation complexe, juste
rm -rf .venv.
Checklist
Section intitulée « Checklist »Utilisez cette checklist pour valider votre maîtrise des environnements virtuels :
- Créer un environnement avec
python3 -m venv .venv - Activer l’environnement (Linux/macOS/Windows)
- Vérifier l’activation avec
which python - Désactiver avec
deactivate
Gestion des packages
Section intitulée « Gestion des packages »- Installer un package avec
pip install - Installer une version spécifique
- Lister les packages installés avec
pip list - Exporter avec
pip freeze > requirements.txt - Installer depuis
pip install -r requirements.txt
- Supprimer proprement un environnement
- Configurer
.gitignorecorrectement - Utiliser
pipxpour les outils CLI globaux - Connaître les alternatives (pipenv, uv)