Kodokon kodokon.com

Environnements virtuels, pip et projet propre

Isolez chaque projet dans son venv, figez les dépendances et adoptez une structure de projet reproductible.

8 min · 3 questions

Ouvrir cette leçon dans Kodokon

Installer les dépendances de tous vos projets dans le même interpréteur mène droit au conflit de versions : le projet A exige requests en 2.31, le projet B une version incompatible. L'environnement virtuel (venv) isole chaque projet : son interpréteur, son pip, ses paquets. C'est la pratique professionnelle non négociable - un projet, un environnement, recréable à l'identique sur n'importe quelle machine.

BASH
python -m venv .venv
source .venv/bin/activate
# Sous Windows :
# .venv\Scripts\activate
python -m pip install requests
python -m pip list
Créer, activer et peupler un environnement virtuel

Pour rendre l'installation reproductible, figez les versions. pip freeze exporte tout l'environnement, dépendances transitives comprises, avec des versions exactes : reproductibilité maximale, mises à jour laborieuses. L'approche moderne sépare les deux besoins : les dépendances directes déclarées dans pyproject.toml avec des contraintes souples, et un fichier de verrouillage généré pour l'installation exacte. À l'échelle d'un petit projet, requirements.txt reste parfaitement honorable.

BASH
python -m pip freeze > requirements.txt
# Sur une autre machine :
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
Figer puis reconstruire l'environnement à l'identique

Côté structure, le src layout fait référence : le code vit dans src/<package>/, les tests dans tests/, la configuration dans pyproject.toml. L'intérêt du dossier src n'est pas cosmétique : il empêche d'importer accidentellement le paquet local depuis le répertoire courant, ce qui masquerait des erreurs de packaging - vos tests s'exécutent contre le paquet réellement installé. Pendant le développement, pip install -e . installe le projet en mode éditable.

BASH
mkdir -p src/billing tests
touch src/billing/__init__.py
touch src/billing/invoices.py
touch tests/test_invoices.py
touch pyproject.toml README.md .gitignore
echo ".venv/" >> .gitignore
Squelette d'un projet en src layout

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Que garantit un environnement virtuel ?
    • Une exécution plus rapide du code Python
    • Des dépendances isolées pour chaque projet
    • La compatibilité entre versions de Python
    • Le chiffrement des paquets installés
  2. Que contient un requirements.txt généré par pip freeze ?
    • Uniquement vos dépendances directes
    • Toutes les dépendances installées, versions exactes incluses
    • La liste des paquets disponibles sur PyPI
  3. Pourquoi préférer python -m pip install à pip install ?
    • C'est la seule syntaxe acceptée dans un venv
    • La commande cible le pip de l'interpréteur actif
    • L'installation est plus rapide