venv ou virtualenv : lequel choisir pour créer un environnement virtuel Python?

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

Après l'installation, nous pouvons afficher la version de virtualenv afin de vérifier que l'outil est disponible.

Sortie possible :

Nous pouvons également afficher l'aide de virtualenv pour découvrir ses nombreuses options.

Sortie possible :

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.

Sortie :

Sous Windows, le dossier obtenu contient notamment un répertoire Scripts avec l'interpréteur Python, pip et les scripts d'activation.

Sortie :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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éristiquevenvvirtualenv
TypeModule de la bibliothèque standard PythonPackage externe
Installation avec pipNon, en généralOui
Commande courantepython -m venv .venvpython -m virtualenv .venv
Isolation des packagesOuiOui
ActivationScripts d'activationScripts d'activation
Choix explicite d'un interpréteurOn lance le Python souhaité avec -m venvOption --python disponible
Options avancéesFonctions essentiellesPlus nombreuses
Usage courantExcellent choix par défautUtile 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.

Sortie possible :

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.

Sortie possible :

Sous Windows PowerShell, le script Activate.ps1 est utilisé lorsque la stratégie d'exécution PowerShell autorise son lancement.

Sortie possible :

Sous Linux et macOS, l'activation s'effectue à partir du script présent dans le dossier bin.

Sortie possible :

Après activation, nous pouvons vérifier que la commande python correspond bien à l'environnement attendu.

Sortie possible sous Windows :

Lorsque le travail est terminé, la commande suivante permet de quitter l'environnement virtuel sans le supprimer.

Sortie possible :

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.

Sortie possible :

Nous pouvons vérifier l'emplacement du package installé afin de confirmer qu'il appartient à l'environnement virtuel.

Sortie possible :

Pour partager les dépendances du projet sans partager directement le dossier .venv, nous pouvons les enregistrer dans un fichier requirements.txt.

Sortie :

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.

Sortie possible :

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.

Sortie :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

Si nous choisissons virtualenv, le processus correspondant est le suivant.

Sortie possible :

 




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/


Leave a Reply

Your email address will not be published. Required fields are marked *