- À propos de venv et virtualenv en Python
- Comprendre le module venv
- Comprendre l'outil virtualenv
- Créer un environnement virtuel avec venv
- Créer un environnement virtuel avec virtualenv
- Comparer venv et virtualenv
- Activer et utiliser les environnements créés
- Installer et gérer les packages avec pip
- Choisir entre venv et virtualenv
- À retenir !
1. À propos de venv et virtualenv en Python
Un environnement virtuel Python est un environnement isolé permettant à un projet d'utiliser son propre interpréteur et ses propres packages Python. Cette isolation évite qu'une bibliothèque installée ou mise à jour pour un projet perturbe les dépendances d'un autre projet.
Deux noms reviennent fréquemment lorsqu'il s'agit de créer ces environnements : venv et virtualenv. Ils répondent au même besoin général, mais ne sont pas exactement le même outil. venv appartient à la bibliothèque standard de Python, tandis que virtualenv est un package externe qu'il faut généralement installer avec pip.
Le programme suivant permet de déterminer si le Python actuellement utilisé fonctionne dans un environnement virtuel en comparant sys.prefix et sys.base_prefix.
1 2 3 4 5 6 | import sys print("Interpréteur :", sys.executable) print("Préfixe courant :", sys.prefix) print("Préfixe de base :", sys.base_prefix) print("Environnement virtuel :", sys.prefix != sys.base_prefix) |
Sortie possible :
1 2 3 4 | Interpréteur : C:\mon_projet\.venv\Scripts\python.exe Préfixe courant : C:\mon_projet\.venv Préfixe de base : C:\Python314 Environnement virtuel : True |
La valeur True indique ici que l'interpréteur appartient à un environnement virtuel.
2. Comprendre le module venv
venv est le mécanisme fourni directement avec les versions modernes de Python pour créer des environnements virtuels. Il n'est normalement pas nécessaire d'installer un package Python supplémentaire pour l'utiliser lorsque l'installation de Python fournit ce module.
Nous pouvons vérifier que le module venv est disponible en demandant à Python d'afficher son aide.
1 | python -m venv --help |
Sortie possible :
1 2 3 | usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps] ENV_DIR [ENV_DIR ...] |
La commande python -m venv demande à l'interpréteur Python d'exécuter son module venv. Cette syntaxe est particulièrement utile lorsqu'un ordinateur possède plusieurs installations de Python, car elle permet de savoir quel Python sert de base à l'environnement.
Nous pouvons également vérifier l'interpréteur avant de créer l'environnement.
1 | python -c "import sys; print(sys.executable)" |
Sortie possible :
1 | C:\Python314\python.exe |
Un environnement créé immédiatement avec python -m venv utilisera cette installation Python comme base.
3. Comprendre l'outil virtualenv
virtualenv est un outil externe consacré à la création d'environnements Python isolés. Contrairement à venv, il n'appartient pas à la bibliothèque standard et doit donc généralement être installé dans l'environnement Python depuis lequel nous souhaitons l'utiliser.
La commande suivante installe virtualenv avec le pip associé au Python courant.
1 | python -m pip install virtualenv |
Sortie possible :
1 2 3 | Collecting virtualenv ... Successfully installed virtualenv-... distlib-... filelock-... platformdirs-... |
Après l'installation, nous pouvons afficher la version de virtualenv afin de vérifier que l'outil est disponible.
1 | python -m virtualenv --version |
Sortie possible :
1 | virtualenv 20.x.x from ... |
Nous pouvons également afficher l'aide de virtualenv pour découvrir ses nombreuses options.
1 | python -m virtualenv --help |
Sortie possible :
1 2 3 | usage: virtualenv [--version] [--with-traceback] [-v | -q] ... [--python PYTHON] ... dest |
virtualenv propose davantage d'options et de mécanismes spécialisés que venv. Son intérêt dépend cependant du projet : pour de nombreux projets Python modernes, venv suffit parfaitement.
4. Créer un environnement virtuel avec venv
La création d'un environnement avec venv est très simple. Depuis la racine du projet, nous pouvons créer un dossier nommé .venv avec la commande suivante.
1 | python -m venv .venv |
Sortie :
1 2 | Aucun message n'est généralement affiché. Le dossier .venv est créé. |
Sous Windows, le dossier obtenu contient notamment un répertoire Scripts avec l'interpréteur Python, pip et les scripts d'activation.
1 2 3 4 5 6 7 8 9 | .venv/ ├── Include/ ├── Lib/ ├── Scripts/ │ ├── activate.bat │ ├── Activate.ps1 │ ├── pip.exe │ └── python.exe └── pyvenv.cfg |
Sortie :
1 | L'environnement .venv possède son propre contexte Python et son dossier de packages. |
Le fichier pyvenv.cfg contient des informations relatives à l'environnement et à l'installation Python utilisée comme base. Nous pouvons afficher son contenu sous Windows avec la commande suivante.
1 | type .venv\pyvenv.cfg |
Sortie possible :
1 2 3 4 | home = C:\Python314 include-system-site-packages = false version = 3.14.1 ... |
Le contenu exact du fichier peut varier selon la version de Python et la plateforme utilisée.
5. Créer un environnement virtuel avec virtualenv
Après avoir installé virtualenv, la création d'un environnement ressemble beaucoup à celle réalisée avec venv. Nous pouvons par exemple créer un environnement nommé .venv avec la commande suivante.
1 | python -m virtualenv .venv |
Sortie possible :
1 2 3 4 | created virtual environment CPython3.x.x.final.0-64 in ...ms creator CPython3Windows(dest=C:\mon_projet\.venv, ...) seeder FromAppData(...) activators BashActivator,BatchActivator,PowerShellActivator,... |
Contrairement à venv, virtualenv affiche généralement des informations détaillées concernant la création de l'environnement.
Virtualenv permet également de préciser explicitement l'interpréteur Python à utiliser. La syntaxe suivante illustre l'utilisation de l'option --python avec un chemin d'interpréteur.
1 | python -m virtualenv --python="C:\Python314\python.exe" .venv |
Sortie possible :
1 2 3 | created virtual environment CPython3.14.x.final.0-64 in ...ms creator CPython3Windows(dest=C:\mon_projet\.venv, ...) ... |
Cette possibilité est pratique lorsque plusieurs interpréteurs Python sont installés et que nous voulons choisir explicitement celui qui servira à créer l'environnement.
6. Comparer venv et virtualenv
venv et virtualenv ont le même objectif principal : fournir un environnement Python isolé pour un projet. La différence essentielle est que venv est intégré à Python tandis que virtualenv constitue un package externe plus spécialisé.
| Caractéristique | venv | virtualenv |
|---|---|---|
| Type | Module de la bibliothèque standard Python | Package externe |
| Installation avec pip | Non, en général | Oui |
| Commande courante | python -m venv .venv | python -m virtualenv .venv |
| Isolation des packages | Oui | Oui |
| Activation | Scripts d'activation | Scripts d'activation |
| Choix explicite d'un interpréteur | On lance le Python souhaité avec -m venv | Option --python disponible |
| Options avancées | Fonctions essentielles | Plus nombreuses |
| Usage courant | Excellent choix par défaut | Utile pour des besoins spécifiques |
Nous pouvons vérifier quel outil a été utilisé pour un environnement en consultant certaines métadonnées, mais dans l'utilisation quotidienne, le point essentiel reste de vérifier l'interpréteur réellement exécuté.
Le programme suivant affiche l'interpréteur et confirme si le processus Python fonctionne dans un environnement virtuel.
1 2 3 4 | import sys print("Python :", sys.executable) print("Environnement virtuel :", sys.prefix != sys.base_prefix) |
Sortie possible :
1 2 | Python : C:\mon_projet\.venv\Scripts\python.exe Environnement virtuel : True |
Une fois créé, l'environnement s'utilise donc de façon très similaire, qu'il ait été généré avec venv ou virtualenv.
7. Activer et utiliser les environnements créés
Les environnements créés avec venv et virtualenv proposent des mécanismes d'activation similaires. Sous Windows avec CMD, nous pouvons activer .venv avec le script activate.bat.
1 | .venv\Scripts\activate.bat |
Sortie possible :
1 | (.venv) C:\mon_projet> |
Sous Windows PowerShell, le script Activate.ps1 est utilisé lorsque la stratégie d'exécution PowerShell autorise son lancement.
1 | .\.venv\Scripts\Activate.ps1 |
Sortie possible :
1 | (.venv) PS C:\mon_projet> |
Sous Linux et macOS, l'activation s'effectue à partir du script présent dans le dossier bin.
1 | source .venv/bin/activate |
Sortie possible :
1 | (.venv) utilisateur@ordinateur:~/mon_projet$ |
Après activation, nous pouvons vérifier que la commande python correspond bien à l'environnement attendu.
1 | python -c "import sys; print(sys.executable)" |
Sortie possible sous Windows :
1 | C:\mon_projet\.venv\Scripts\python.exe |
Lorsque le travail est terminé, la commande suivante permet de quitter l'environnement virtuel sans le supprimer.
1 | deactivate |
Sortie possible :
1 2 3 4 5 | Avant : (.venv) C:\mon_projet> Après : C:\mon_projet> |
8. Installer et gérer les packages avec pip
Une fois l'environnement virtuel activé, les packages nécessaires au projet peuvent être installés avec pip. Il est recommandé d'utiliser python -m pip afin de lier explicitement pip à l'interpréteur Python courant.
La commande suivante installe par exemple le package requests dans l'environnement.
1 | python -m pip install requests |
Sortie possible :
1 2 3 | Collecting requests ... Successfully installed certifi-... charset-normalizer-... idna-... requests-2.32.5 urllib3-... |
Nous pouvons vérifier l'emplacement du package installé afin de confirmer qu'il appartient à l'environnement virtuel.
1 | python -m pip show requests |
Sortie possible :
1 2 3 4 | Name: requests Version: 2.32.5 Location: C:\mon_projet\.venv\Lib\site-packages ... |
Pour partager les dépendances du projet sans partager directement le dossier .venv, nous pouvons les enregistrer dans un fichier requirements.txt.
1 | python -m pip freeze > requirements.txt |
Sortie :
1 2 | Aucun message n'est normalement affiché. Le fichier requirements.txt est créé ou remplacé. |
Sur une autre machine ou après la recréation de l'environnement, les dépendances peuvent être réinstallées avec la commande suivante.
1 | python -m pip install -r requirements.txt |
Sortie possible :
1 2 3 4 5 6 7 | Collecting certifi==... Collecting charset-normalizer==... Collecting idna==... Collecting requests==2.32.5 Collecting urllib3==... ... Successfully installed ... |
La gestion des packages est donc pratiquement identique pour un environnement créé avec venv ou avec virtualenv.
9. Choisir entre venv et virtualenv
Pour la majorité des projets utilisant une version moderne de Python, venv constitue un excellent choix par défaut. Il est directement fourni avec Python, sa syntaxe est simple et il répond aux besoins habituels d'isolation des dépendances pour des projets Python, Django, Flask, Jupyter ou de science des données.
La création d'un environnement avec venv nécessite uniquement la commande suivante dans une installation Python qui fournit le module.
1 | python -m venv .venv |
Sortie :
1 2 | Aucun message n'est généralement affiché. L'environnement .venv est créé. |
virtualenv devient intéressant lorsqu'un projet ou un workflow a besoin de fonctionnalités spécifiques proposées par cet outil, d'un contrôle plus explicite sur la création des environnements ou lorsque l'écosystème utilisé repose déjà sur virtualenv.
Dans ce cas, nous installons d'abord l'outil puis nous créons l'environnement.
1 2 | python -m pip install virtualenv python -m virtualenv .venv |
Sortie possible :
1 2 3 | Successfully installed virtualenv-... created virtual environment CPython3.x.x.final.0-64 in ...ms ... |
Le choix peut donc être résumé simplement : utiliser venv par défaut pour les besoins courants et choisir virtualenv lorsqu'une fonctionnalité ou une contrainte particulière justifie son utilisation.
Quel que soit l'outil choisi, le programme suivant permet de vérifier que le Python du projet appartient bien à un environnement virtuel.
1 2 3 4 5 6 | import sys print("Interpréteur :", sys.executable) print("Environnement :", sys.prefix) print("Python de base :", sys.base_prefix) print("Environnement virtuel :", sys.prefix != sys.base_prefix) |
Sortie possible :
1 2 3 4 | Interpréteur : C:\mon_projet\.venv\Scripts\python.exe Environnement : C:\mon_projet\.venv Python de base : C:\Python314 Environnement virtuel : True |
10. À retenir !
venv et virtualenv permettent tous les deux de créer des environnements Python isolés. Leur objectif principal est d'empêcher les dépendances d'un projet d'interférer avec celles d'un autre projet ou avec l'installation Python principale.
- venv fait partie de la bibliothèque standard de Python.
- virtualenv est un package externe qu'il faut généralement installer avec pip.
- python -m venv .venv constitue une solution simple pour créer un environnement avec venv.
- python -m virtualenv .venv permet de créer un environnement avec virtualenv après installation de celui-ci.
- Avec venv, nous pouvons choisir une version de Python en exécutant -m venv avec l'interpréteur souhaité.
- Virtualenv propose notamment une option --python permettant de préciser un interpréteur.
- Les deux solutions isolent les packages du projet.
- Les commandes d'activation sont très similaires pour les environnements obtenus.
- python -m pip permet de gérer les packages avec le pip associé à l'interpréteur courant.
- Pour les projets Python modernes courants, venv constitue généralement le choix le plus simple par défaut.
Si nous souhaitons utiliser venv, le processus minimal sous Windows avec CMD est le suivant.
1 2 3 4 | python -m venv .venv .venv\Scripts\activate.bat python -c "import sys; print(sys.executable)" python -m pip --version |
Sortie possible :
1 2 3 | (.venv) C:\mon_projet> C:\mon_projet\.venv\Scripts\python.exe pip 25.x from C:\mon_projet\.venv\Lib\site-packages\pip (python 3.14) |
Si nous choisissons virtualenv, le processus correspondant est le suivant.
1 2 3 4 | python -m pip install virtualenv python -m virtualenv .venv .venv\Scripts\activate.bat python -c "import sys; print(sys.executable)" |
Sortie possible :
1 2 3 4 | Successfully installed virtualenv-... created virtual environment CPython3.x.x.final.0-64 in ...ms (.venv) C:\mon_projet> C:\mon_projet\.venv\Scripts\python.exe |
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


