Aller au contenu
Développement high

Environnements virtuels Python : isoler vos projets

15 min de lecture

logo python

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 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 venv en 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.txt pour des environnements reproductibles
  • Choisir la bonne alternative entre venv, virtualenv, pipenv et uv

Sans environnement virtuel, tous vos projets Python partagent les mêmes packages installés globalement. Voici ce qui peut mal tourner :

SituationProblèmeConséquence
Projet A utilise requests==2.25Projet B a besoin de requests==2.31L’un des deux projets casse
Vous testez une nouvelle version de FlaskL’ancien projet n’est plus compatibleRégression en production
Vous collaborez avec un collègueSes versions diffèrent des vôtres”Ça marche sur ma machine”
Vous déployez en productionLe serveur a d’autres versionsErreurs imprévisibles

Schéma : sans environnement virtuel, tous les projets partagent les mêmes packages et créent des conflits

Avec un environnement virtuel, chaque projet a son propre espace :

Schéma : avec environnement virtuel, chaque projet a ses propres packages isolés

Avantages concrets :

  • Pas de conflits — chaque projet a ses propres versions de packages
  • Reproductibilité — exportez requirements.txt et 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

Le module venv est intégré à Python depuis la version 3.3. Pas besoin d’installer quoi que ce soit.

Avant de commencer, vérifiez que Python 3.3+ est installé :

Fenêtre de terminal
python3 --version

Sortie attendue : Python 3.11.6 (ou version supérieure)

Dans le dossier de votre projet, exécutez :

Fenêtre de terminal
python3 -m venv .venv

Cette commande crée un dossier .venv contenant :

Dossier/FichierContenu
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.cfgConfiguration de l’environnement

Listez le contenu du dossier créé :

Fenêtre de terminal
ls -la .venv/

Vous devez voir les dossiers bin/, lib/, include/ et le fichier pyvenv.cfg.

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.

Fenêtre de terminal
source .venv/bin/activate

Alternative avec point :

Fenêtre de terminal
. .venv/bin/activate

Après activation, votre prompt change pour afficher le nom de l’environnement :

Fenêtre de terminal
# Avant activation
user@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 :

/home/user/mon-projet/.venv/bin/python
which python

Quand vous avez terminé de travailler sur le projet :

Fenêtre de terminal
deactivate

Le prompt redevient normal et les commandes python et pip utilisent à nouveau l’installation globale.

Une fois l’environnement activé, pip installe les packages uniquement dans cet environnement.

Fenêtre de terminal
pip install requests

Cette commande :

  1. Télécharge le package requests depuis PyPI
  2. L’installe dans .venv/lib/python3.x/site-packages/
  3. Installe automatiquement ses dépendances (urllib3, certifi, etc.)

Pour garantir la compatibilité, spécifiez une version exacte :

Fenêtre de terminal
pip install requests==2.31.0

Syntaxes de version disponibles :

SyntaxeSignification
requests==2.31.0Version exacte
requests>=2.28.0Version minimale
requests>=2.28,<3.0Plage de versions
requests~=2.31.0Compatible avec 2.31.x
Fenêtre de terminal
pip list

Sortie exemple :

Package Version
------------------ ---------
certifi 2023.11.17
charset-normalizer 3.3.2
idna 3.6
pip 23.3.1
requests 2.31.0
urllib3 2.1.0
Fenêtre de terminal
pip install --upgrade requests
Fenêtre de terminal
pip uninstall requests

Confirmez avec y quand demandé.

Le fichier requirements.txt liste toutes les dépendances de votre projet. Il permet de recréer un environnement identique sur une autre machine.

Fenêtre de terminal
pip freeze > requirements.txt

Contenu généré :

certifi==2023.11.17
charset-normalizer==3.3.2
idna==3.6
requests==2.31.0
urllib3==2.1.0

Sur une nouvelle machine ou après avoir cloné un projet :

  1. Créer un environnement virtuel

    Fenêtre de terminal
    python3 -m venv .venv
  2. Activer l’environnement

    Fenêtre de terminal
    source .venv/bin/activate
  3. 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.

1. Séparez les dépendances directes des indirectes

Créez deux fichiers :

  • requirements.in — packages que vous utilisez directement
  • requirements.txt — généré par pip freeze, inclut les dépendances transitives

2. Versionnez requirements.txt dans Git

Fenêtre de terminal
git add requirements.txt
git commit -m "Ajout des dépendances du projet"

3. Gardez les versions à jour

Périodiquement, vérifiez les mises à jour de sécurité :

Fenêtre de terminal
pip list --outdated

Un environnement virtuel est un simple dossier. Pour le supprimer :

Fenêtre de terminal
rm -rf .venv

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.md

Contenu minimal de .gitignore :

# Environnement virtuel
.venv/
venv/
env/
# Cache Python
__pycache__/
*.pyc
*.pyo
# pip
pip-log.txt

venv convient à la majorité des projets, mais d’autres outils offrent des fonctionnalités supplémentaires.

OutilPoints fortsCas d’usage
venvIntégré à Python, simpleProjets standards
virtualenvCompatible Python 2, plus rapideLegacy, CI/CD
pipenvPipfile.lock, gestion intégréeÉquipes, reproductibilité
uvUltra-rapide (Rust), compatible pipProjets modernes, CI/CD
condaPackages non-Python, data scienceML, calcul scientifique

Plus ancien que venv, mais supporte Python 2 et crée les environnements plus rapidement.

Fenêtre de terminal
pip install virtualenv
virtualenv .venv
source .venv/bin/activate

Combine environnement virtuel et gestion des dépendances dans un seul outil. Utilise Pipfile au lieu de requirements.txt.

Fenêtre de terminal
pip install pipenv
pipenv install requests # Crée l'env et installe le package
pipenv shell # Active l'environnement

Fichiers générés :

  • Pipfile — dépendances lisibles
  • Pipfile.lock — versions exactes verrouillées

Outil moderne écrit en Rust, 10 à 100 fois plus rapide que pip pour l’installation de packages.

Fenêtre de terminal
# Installation de uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Créer un environnement et installer des packages
uv venv
source .venv/bin/activate
uv pip install requests

Avantages de uv :

  • Compatible avec requirements.txt et pyproject.toml
  • Résolution de dépendances déterministe
  • Cache global partagé entre projets

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.

Fenêtre de terminal
# Installer pipx
pip install pipx
pipx ensurepath
# Installer des outils globaux isolés
pipx install black
pipx install httpie
pipx install poetry
# Utiliser l'outil n'importe où
black --version
http https://api.github.com
SymptômeCause probableSolution
source: not foundShell non compatibleUtilisez bash ou . .venv/bin/activate
Erreur PowerShellPolitique d’exécutionSet-ExecutionPolicy RemoteSigned -Scope CurrentUser
Pas de changement de promptActivation échouée silencieusementVérifiez que .venv/bin/activate existe
/chemin/vers/.venv/bin/pip
# Vérifier quel pip est utilisé
which pip
# Si ce n'est pas le cas, utilisez explicitement
.venv/bin/pip install requests
Fenêtre de terminal
# Voir les dépendances en conflit
pip check
# Forcer la réinstallation des dépendances
pip install --force-reinstall -r requirements.txt

Parfois, après une mise à jour de Python système, l’environnement ne fonctionne plus :

Fenêtre de terminal
# Solution : recréer l'environnement
rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Si vous ne retenez que six choses de ce guide, retenez celles-ci :

  1. Toujours utiliser un environnement virtuel — même pour un petit projet. C’est 10 secondes qui évitent des heures de débogage.

  2. Convention .venv — nommez votre environnement .venv dans le dossier du projet, il sera automatiquement ignoré par Git.

  3. Activer avant d’installer — vérifiez que (.venv) apparaît dans votre prompt avant tout pip install.

  4. requirements.txt pour la reproductibilité — exportez avec pip freeze > requirements.txt et versionnez ce fichier.

  5. deactivate pour sortir — simple mais souvent oublié. Votre prompt redevient normal.

  6. Supprimer = supprimer le dossier — pas de désinstallation complexe, juste rm -rf .venv.

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
  • 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 .gitignore correctement
  • Utiliser pipx pour les outils CLI globaux
  • Connaître les alternatives (pipenv, uv)