Tech

Environnement virtuel Python : isoler un projet, une version et ses dépendances

Baptiste Le Goffic 8 min de lecture
Environnement virtuel python : dossier .venv et dépendances isolées

Un environnement virtuel Python sert à travailler sur un projet sans mélanger ses paquets avec ceux d’un autre projet, ni avec l’installation globale de la machine. C’est un réflexe utile dès que vous installez des bibliothèques avec pip, même pour un petit script.

Le principe est simple : chaque projet dispose de son propre espace d’exécution, avec sa version de Python et ses dépendances. Vous pouvez ainsi utiliser Django 3.2 sur une application, Django 4.2 sur une autre, ou garder requests 2.25 dans un ancien projet pendant qu’un nouveau utilise requests 2.31.

Ce qu’est vraiment un environnement virtuel Python

Un environnement virtuel Python est un dossier dédié, créé pour un projet précis. Il contient ce qu’il faut pour exécuter Python dans un cadre isolé, avec un interpréteur, des scripts d’activation, un emplacement pour les paquets installés et un fichier de configuration comme pyvenv.cfg.

Schéma d’un environnement virtuel Python montrant .venv, bin, lib, site-packages et pyvenv.cfg
Schéma d’un environnement virtuel Python montrant .venv, bin, lib, site-packages et pyvenv.cfg

Il ne faut pas le confondre avec une machine virtuelle. Il ne virtualise ni le système d’exploitation, ni la mémoire, ni le réseau. Il sépare seulement l’environnement Python utilisé par votre projet. Cette séparation suffit à éviter la plupart des conflits de dépendances rencontrés au quotidien.

Installation globale contre installation isolée

Sans environnement virtuel, une commande comme pip install peut installer un paquet dans l’environnement global de Python. Le problème apparaît quand plusieurs projets partagent cet espace commun. Une mise à jour utile pour l’un peut devenir une régression pour l’autre, surtout si une bibliothèque change son API entre une version 1.0, 2.0 ou 3.0.

Avec un environnement virtuel activé, pip install n’affecte que cet environnement. Vos autres projets ne voient pas cette installation et continuent d’utiliser leurs propres versions. Cette frontière locale rend le développement Python plus stable et plus prévisible.

Que contient le dossier créé ?

Selon le système, vous trouverez généralement des dossiers comme bin sur macOS et Linux, ou Scripts sur Windows, ainsi que lib, include et site-packages. Le dossier site-packages est important : c’est là que sont installées les bibliothèques ajoutées avec pip.

Le fichier pyvenv.cfg garde des informations sur l’environnement, notamment le chemin de l’installation Python utilisée pour le créer. Si vous lancez la création avec Python 3.12, l’environnement virtuel sera lié à cette version. C’est pratique pour garder un contexte d’exécution précis pour un projet.

Pourquoi l’isolation évite les conflits de dépendances

Le besoin devient évident dès que vous travaillez sur plusieurs projets. Un site web peut dépendre d’une ancienne version de Django, un outil interne peut nécessiter une bibliothèque plus récente, et un notebook de data peut demander une combinaison spécifique de paquets. Sans isolation, ces exigences se retrouvent dans le même panier.

Créer et gérer des environnements virtuels Python : Documentation officielle pour apprendre à utiliser le module venv et créer des environnements virtuels légers en Python.

Les conflits de dépendances ne sont pas toujours visibles tout de suite. Parfois, tout s’installe correctement, mais une fonction ne se comporte plus comme avant. Une mise à jour mineure peut modifier un comportement, déprécier une option ou créer une incompatibilité avec une autre bibliothèque. L’environnement virtuel limite ce risque en cloisonnant les choix techniques.

Il existe aussi un écart entre “le code fonctionne chez moi” et “le projet reste maintenable”. Cet écart se creuse souvent quand les dépendances sont installées au fil de l’eau, sans trace claire ni frontière entre les projets. Un environnement virtuel, associé à un fichier requirements.txt, transforme une configuration implicite en base reproductible : on sait quelles versions installer, où elles vivent, et ce qu’il faut reconstruire si la machine change.

Des cas concrets où venv devient indispensable

Pour un étudiant, un environnement virtuel évite de casser les exercices précédents en installant une nouvelle bibliothèque. Pour un freelance, il permet de passer d’un client à l’autre sans transporter des dépendances inutiles. Pour une équipe, il facilite la reproductibilité : chacun peut créer le même environnement à partir des mêmes indications.

Dans un projet web, l’isolation protège les frameworks, les connecteurs de base de données et les outils de test. Dans un projet data, elle aide à stabiliser les versions de bibliothèques qui évoluent vite. Même pour un script d’automatisation, elle évite de polluer l’installation globale avec des paquets que vous n’utiliserez qu’une fois.

Créer un environnement virtuel avec venv

venv est le module intégré à la bibliothèque standard de Python pour créer et gérer des environnements virtuels. Dans la plupart des cas, c’est le choix le plus simple : il ne demande pas d’outil externe et répond aux besoins courants.

Placez-vous dans le dossier de votre projet, puis lancez :

python -m venv .venv

La commande python -m venv tutorial-env est aussi souvent utilisée dans les exemples, notamment dans la documentation Python. Le nom du dossier est libre : .venv est courant parce qu’il indique clairement un environnement local au projet et reste discret dans l’arborescence.

Choisir le bon emplacement

Le plus pratique est de créer l’environnement virtuel à la racine du projet, dans un dossier nommé .venv ou venv. Vous gardez ainsi le code et son environnement de travail au même endroit, sans confondre les dépendances avec les fichiers applicatifs.

Il est généralement inutile de versionner ce dossier dans Git. On versionne plutôt la liste des dépendances, par exemple avec requirements.txt, afin que chaque personne puisse reconstruire son propre environnement localement.

Créer un fichier requirements.txt

Une fois vos paquets installés, vous pouvez figer l’état de l’environnement avec :

pip freeze > requirements.txt

Sur une autre machine, ou après suppression de l’environnement, il suffira de recréer un environnement virtuel puis d’installer les dépendances avec :

pip install -r requirements.txt

Ce fichier améliore la reproductibilité. Il ne remplace pas une vraie stratégie de maintenance, mais il donne une base claire pour retrouver les versions utilisées au moment où le projet fonctionnait.

Activer, utiliser et désactiver l’environnement

Créer l’environnement ne suffit pas. Il faut l’activer avant d’installer ou d’exécuter votre projet. L’activation modifie temporairement le terminal pour que les commandes python et pip pointent vers l’environnement virtuel plutôt que vers l’installation globale.

Système Commande d’activation courante
Windows .venv\Scripts\activate
macOS source .venv/bin/activate
Linux source .venv/bin/activate

Une fois l’environnement activé, le nom du dossier apparaît souvent au début de la ligne de commande. Vous pouvez alors installer un paquet :

pip install requests

Cette installation reste locale à l’environnement activé. Si vous changez de projet et activez un autre environnement, vous retrouvez un autre ensemble de paquets, indépendant du précédent.

Désactivation et suppression

Pour sortir de l’environnement virtuel, utilisez simplement :

deactivate

La désactivation ne supprime rien. Elle rend seulement le terminal à son état habituel. Si vous voulez supprimer complètement l’environnement, vous pouvez effacer le dossier .venv. Tant que votre fichier requirements.txt est à jour, vous pourrez le reconstruire ensuite.

  • Créez un environnement virtuel au début de chaque nouveau projet Python.
  • Activez-le avant tout pip install.
  • Gardez les dépendances dans requirements.txt.
  • Évitez de modifier l’installation globale sauf nécessité claire.
  • Recréez l’environnement plutôt que de le réparer à l’aveugle si les dépendances deviennent incohérentes.

venv, virtualenv, pipenv ou uv : quel outil choisir ?

venv suffit dans une grande majorité de projets : il est intégré, stable et facile à comprendre. Les alternatives deviennent intéressantes quand vous avez des contraintes plus spécifiques, comme la compatibilité avec d’anciennes versions de Python, une gestion plus structurée des dépendances ou une recherche de performances.

Outil Intérêt principal À privilégier si…
venv Solution intégrée à Python pour créer un environnement isolé Vous voulez une méthode simple, standard et sans dépendance externe
virtualenv Alternative historique, avec davantage de compatibilité selon les contextes Vous travaillez sur des environnements anciens ou particuliers
pipenv Gestion combinée de l’environnement et des dépendances Vous souhaitez un flux plus encadré autour des fichiers de dépendances
uv Outil moderne orienté rapidité et gestion efficace des paquets Vous cherchez des installations rapides et un workflow plus récent

Pour apprendre Python ou démarrer proprement un projet, commencez par venv. Vous comprendrez mieux ce qui se passe : création du dossier, activation, installation locale, désactivation. Ensuite seulement, les outils plus complets auront du sens, car vous saurez quel problème ils simplifient.

Le bon réflexe n’est donc pas de choisir l’outil le plus sophistiqué, mais celui qui rend votre projet lisible et reproductible. Dans beaucoup de situations, un environnement virtuel Python créé avec python -m venv .venv, activé correctement et accompagné d’un requirements.txt bien tenu constitue déjà une base professionnelle.

Baptiste Le Goffic
Retour en haut