Aller au contenu

Environnements Virtuels Python

Mise à jour :

logo python

Lorsque vous développez des applications en Python, il est fréquent d’avoir plusieurs projets en parallèle, chacun nécessitant ses propres dépendances et versions de bibliothèques. Par exemple, un projet pourrait utiliser une version précise de Flask, tandis qu’un autre projet pourrait nécessiter une version différente. Installer toutes ces dépendances au niveau global sur votre machine peut rapidement devenir un cauchemar. C’est ici que les environnements virtuels entrent en jeu. Ils permettent de créer des espaces isolés pour chaque projet, garantissant que les bibliothèques et les versions de Python ne se chevauchent pas entre les projets.

Dans ce guide, je vais vous montrer comment utiliser les environnements virtuels en Python pour gérer vos projets de manière efficace et sans conflit. Vous apprendrez à créer, activer, et gérer des environnements virtuels grâce à des outils comme venv et pip, tout en évitant les pièges classiques. Cela vous permettra de garder vos projets bien organisés et de simplifier le déploiement de vos applications.

Qu’est-ce qu’un environnement virtuel ?

Un environnement virtuel en Python est une manière d’isoler les dépendances spécifiques d’un projet dans un espace dédié, sans interférer avec les autres projets ou l’installation globale de Python sur votre système. En pratique, cela signifie que chaque projet peut avoir ses propres versions de python et de ses bibliothèques, indépendamment des autres environnements ou de l’installation globale de Python.

Prenons un exemple courant : si vous travaillez sur deux projets Python, l’un nécessitant Django 3.2 et l’autre Django 4.0, installer ces deux versions globalement sur votre machine pourrait causer des conflits. En effet, Python ne pourrait pas gérer deux versions de Django simultanément dans le même espace global. C’est ici qu’interviennent les environnements virtuels : ils permettent d’isoler chaque projet et de lui attribuer ses propres versions de bibliothèques.

Comment cela fonctionne-t-il ?

Un environnement virtuel fonctionne en créant un répertoire dédié pour chaque projet, où une copie locale de l’exécutable Python et de l’outil pip est placée. Cela signifie que lorsque vous installez un module ou une bibliothèque dans cet environnement, ces installations sont localisées dans ce répertoire spécifique. Elles ne sont pas accessibles en dehors de cet environnement, et inversement, les bibliothèques installées globalement ne sont pas accessibles dans l’environnement virtuel.

Avantages des environnements virtuels :

  • Isolation complète des dépendances : Chaque environnement a ses propres versions de bibliothèques, assurant qu’il n’y a pas de conflits entre les projets.
  • Contrôle total des versions : Vous pouvez verrouiller les versions exactes des bibliothèques utilisées, ce qui garantit que votre projet continuera de fonctionner même si des mises à jour sont effectuées sur les bibliothèques.
  • Déploiement simplifié : Grâce à l’isolation des environnements, vous pouvez reproduire facilement les conditions exactes de développement sur d’autres machines, par exemple lors du déploiement en production.

Utilisation de venv

Le module venv est l’outil intégré dans Python à partir de la version 3.3 qui permet de créer des environnements virtuels. Il est simple à utiliser, n’a pas besoin d’installation supplémentaire (contrairement à des alternatives comme virtualenv), et répond parfaitement aux besoins de la majorité des développeurs Python. Voyons comment configurer un environnement virtuel avec venv.

Vérifier l’installation de Python

Avant d’utiliser venv, il est important de vérifier que Python est bien installé sur votre machine et que vous avez accès à la bonne version. Vous pouvez utiliser la commande suivante dans votre terminal pour vérifier la version de Python installée :

Terminal window
python3 --version

Si la version affichée est égale ou supérieure à 3.3, vous avez déjà accès à venv, sinon vous devrez mettre à jour Python.

Création d’un environnement virtuel

La première étape pour créer un environnement virtuel avec venv consiste à choisir un répertoire où cet environnement sera stocké. Cela peut être le répertoire de votre projet ou un répertoire dédié. Ensuite, exécutez la commande suivante pour créer l’environnement :

Terminal window
python3 -m venv mon_env

Cette commande crée un répertoire appelé mon_env (vous pouvez choisir un autre nom) qui contient une copie locale de Python ainsi que l’outil pip pour gérer les packages. Ce répertoire contiendra tous les fichiers nécessaires pour isoler l’environnement virtuel.

Structure du répertoire d’un environnement virtuel

Lorsque vous créez un environnement virtuel avec venv, plusieurs sous-répertoires et fichiers sont générés dans le dossier mon_env :

  • bin/ (ou Scripts/ sur Windows) : Ce dossier contient l’exécutable Python et des scripts comme activate pour activer l’environnement virtuel.
  • lib/ : C’est ici que sont installées toutes les bibliothèques Python spécifiques à cet environnement.
  • include/ : Contient les fichiers d’en-tête nécessaires pour compiler des modules Python qui nécessitent des dépendances en C ou C++.
  • pyvenv.cfg : Ce fichier de configuration stocke des informations sur la version de Python utilisée dans l’environnement virtuel.

Activation de l’environnement virtuel

Une fois que vous avez créé votre environnement virtuel à l’aide de venv, il est nécessaire de l’activer pour commencer à travailler dedans. L’activation est une étape importante car elle permet de s’assurer que toutes les installations de packages et les exécutions de scripts se font dans cet environnement isolé, et non dans l’installation globale de Python sur votre système.

Pourquoi activer un environnement virtuel ?

Lorsque vous activez un environnement virtuel, le terminal (ou l’invite de commande) utilise spécifiquement les exécutables et bibliothèques contenus dans cet environnement. Cela vous garantit que toutes les commandes liées à Python (comme l’installation de bibliothèques avec pip) ne concernent que cet environnement et ne modifient pas les bibliothèques installées globalement.

Par exemple, sans activer l’environnement virtuel, si vous installez un module via pip, celui-ci sera installé globalement et pourrait potentiellement entrer en conflit avec d’autres projets. En activant l’environnement virtuel, vous isolez les installations à ce projet spécifique.

Comment activer l’environnement virtuel ?

La méthode d’activation varie selon le système d’exploitation que vous utilisez. Voici les différentes façons d’activer un environnement virtuel sous Linux, macOS et Windows.

Sur Linux et macOS

Si vous êtes sur Linux ou macOS, l’activation de l’environnement virtuel se fait en exécutant la commande suivante dans le terminal :

Terminal window
source mon_env/bin/activate

Dans cette commande, mon_env est le nom du répertoire dans lequel se trouve votre environnement virtuel (que vous avez défini lors de sa création). Après exécution de cette commande, vous remarquerez que le prompt du terminal change et affiche le nom de l’environnement virtuel à gauche, par exemple :

(mon_env) $

Cela indique que l’environnement est bien activé et que toutes les actions effectuées dans ce terminal se feront dans cet environnement spécifique.

Sur Windows

Sous Windows, le processus d’activation est légèrement différent. Vous devez exécuter le script activate.bat qui se trouve dans le sous-répertoire Scripts de votre environnement virtuel. Voici la commande à exécuter dans l’invite de commandes :

Terminal window
mon_env\Scripts\activate

Tout comme sous Linux ou macOS, vous verrez un changement dans l’invite de commande, qui affichera le nom de l’environnement virtuel. Par exemple :

(mon_env) C:\>

Cela signifie que vous travaillez désormais dans l’environnement virtuel.

Désactivation de l’environnement virtuel

Une fois que vous avez terminé de travailler dans un environnement virtuel, vous pouvez revenir à l’environnement Python global en désactivant l’environnement virtuel. Pour ce faire, il suffit d’exécuter la commande suivante, quel que soit votre système d’exploitation :

Terminal window
deactivate

Cette commande supprime simplement l’environnement virtuel du contexte de votre terminal, vous ramenant à l’environnement Python global. Le prompt du terminal ne contiendra plus le nom de l’environnement activé, ce qui signifie que vous n’êtes plus dans cet environnement virtuel.

Installation des packages dans l’environnement virtuel

Une fois que votre environnement virtuel est créé et activé, il est prêt à accueillir les packages python dont votre projet a besoin. En Python, la gestion des bibliothèques et modules externes se fait principalement via pip, le gestionnaire de paquets par défaut. L’installation de dépendances dans un environnement virtuel vous permet de garder un contrôle strict sur les versions de ces bibliothèques, évitant ainsi des conflits potentiels avec d’autres projets.

Utilisation de pip pour installer des packages

Quand l’environnement virtuel est activé, l’utilisation de pip devient locale à cet environnement. Cela signifie que tout package que vous installez via pip sera placé dans le répertoire dédié de l’environnement, et n’affectera pas votre installation globale de Python. De la même manière, les packages installés globalement ne seront pas accessibles à l’intérieur de votre environnement virtuel.

Supposons que votre projet nécessite l’utilisation de la bibliothèque requests, qui est un package populaire pour effectuer des requêtes HTTP en Python. Avec l’environnement virtuel activé, vous pouvez installer cette bibliothèque en exécutant la commande suivante :

Terminal window
pip install requests

Cette commande télécharge et installe requests et ses dépendances uniquement dans l’environnement virtuel actif. Vous pouvez vérifier que le package a bien été installé et voir une liste de toutes les bibliothèques installées dans cet environnement avec :

Terminal window
pip list

Cela affichera une liste des packages installés ainsi que leurs versions. Par exemple, vous pourriez voir une sortie comme celle-ci :

Terminal window
Package Version
---------- -------
pip 21.1.3
requests 2.26.0
setuptools 57.0.0

Installation de versions spécifiques

Dans certains cas, vous aurez besoin d’une version spécifique d’un package, par exemple si votre projet a été développé avec une version donnée ou pour assurer la compatibilité. Pour installer une version précise d’un package avec pip, il suffit d’ajouter le numéro de version dans la commande d’installation :

Terminal window
pip install requests==2.26.1

Cela garantit que vous utilisez la bonne version du package, même si des versions plus récentes sont disponibles.

Mise à jour de packages

Avec le temps, il peut être nécessaire de mettre à jour certains packages pour bénéficier des nouvelles fonctionnalités ou des corrections de bugs. Pour mettre à jour un package installé dans votre environnement virtuel, vous pouvez utiliser l’option —upgrade avec la commande pip :

Terminal window
pip install --upgrade requests

Cela remplacera l’ancienne version par la plus récente disponible.

Suppression de packages

Il est également possible que vous ayez besoin de désinstaller un package de votre environnement virtuel si vous ne l’utilisez plus ou s’il crée des conflits. La commande suivante permet de désinstaller un package via pip :

Terminal window
pip uninstall requests

Cela supprimera requests de cet environnement.

Utilisation de fichiers requirements.txt pour gérer les dépendances

Lorsqu’un projet Python devient plus complexe et nécessite plusieurs bibliothèques, il est recommandé de documenter les dépendances dans un fichier appelé requirements.txt. Ce fichier liste les bibliothèques et leurs versions, ce qui permet de recréer l’environnement exact sur une autre machine ou par d’autres développeurs.

Pour générer automatiquement un fichier requirements.txt avec toutes les bibliothèques installées dans l’environnement virtuel actif, vous pouvez utiliser la commande suivante :

Terminal window
pip freeze > requirements.txt

Cette commande capture toutes les bibliothèques et versions installées et les enregistre dans le fichier requirements.txt. Par exemple, le contenu de ce fichier pourrait ressembler à ceci :

requests==2.26.0
Flask==2.0.1

Ce fichier peut ensuite être partagé avec d’autres développeurs ou utilisé lors du déploiement de l’application.

Installation depuis un fichier requirements.txt

Si vous ou un autre développeur devez recréer un environnement identique sur une autre machine, vous pouvez utiliser le fichier requirements.txt pour installer toutes les dépendances en une seule commande :

Terminal window
pip install -r requirements.txt

Cela installe toutes les bibliothèques listées dans requirements.txt avec les versions spécifiées, garantissant ainsi que le projet fonctionne dans les mêmes conditions qu’à l’origine.

Désactivation et suppression d’un environnement virtuel

Une fois que vous avez terminé votre travail dans un environnement virtuel ou que vous n’en avez plus besoin, il est important de savoir comment le désactiver correctement et, si nécessaire, le supprimer de votre système. L’un des principaux avantages des environnements virtuels est qu’ils sont faciles à gérer, y compris lorsqu’il s’agit de les désactiver ou de les supprimer complètement.

Désactivation d’un environnement virtuel

Lorsque vous travaillez dans un environnement virtuel Python, ce dernier reste activé tant que vous n’avez pas explicitement quitté ou fermé votre terminal. Une activation prolongée peut poser problème si vous oubliez que vous êtes dans un environnement virtuel et que vous commencez à interagir avec des packages qui pourraient entrer en conflit avec d’autres environnements ou installations globales.

Pour cette raison, il est toujours bon de désactiver l’environnement virtuel lorsque vous avez terminé votre session de travail. Désactiver l’environnement virtuel est très simple et fonctionne de la même manière sur tous les systèmes d’exploitation (Linux, macOS, Windows).

Pour désactiver l’environnement virtuel, il suffit d’exécuter la commande suivante :

Terminal window
deactivate

Une fois cette commande exécutée, le nom de l’environnement virtuel n’apparaîtra plus dans le prompt de votre terminal, indiquant que l’environnement n’est plus actif. Vous revenez alors à l’environnement Python global de votre machine, ou à un autre environnement si vous en activez un autre.

Imaginons que vous ayez activé un environnement virtuel appelé env_projetX. Le prompt de votre terminal ressemble à ceci :

(mon_venv) $

Cela indique que vous travaillez dans l’environnement virtuel. Après avoir terminé votre travail, exécutez la commande deactivate :

Terminal window
deactivate

Le prompt revient alors à son état normal, par exemple :

$

Cela signifie que vous êtes maintenant hors de l’environnement virtuel et que les commandes Python que vous exécutez, ou les packages que vous installez avec pip, affecteront désormais l’environnement Python global de votre machine.

Suppression d’un environnement virtuel

Si vous n’avez plus besoin d’un environnement virtuel spécifique, vous pouvez le supprimer pour libérer de l’espace et maintenir un système propre. La suppression d’un environnement virtuel est très simple : il suffit de supprimer le répertoire dans lequel il a été créé.

Supposons que vous ayez un environnement virtuel nommé mon_venv situé dans un répertoire de projet. Pour supprimer cet environnement, vous devez simplement utiliser la commande de suppression du système de fichiers. Voici comment le faire selon votre système d’exploitation.

Sur Linux et macOS

Vous pouvez utiliser la commande rm -rf pour supprimer le répertoire contenant l’environnement virtuel :

Terminal window
rm -rf mon_venv

Sur Windows

Sous Windows, vous pouvez utiliser la commande rmdir avec l’option /s pour supprimer le répertoire et tout son contenu :

Terminal window
rmdir /s mon_venv

Dans les deux cas, cela supprimera complètement l’environnement virtuel de votre système. Il n’y a pas d’autre étape requise pour la désinstallation ou la suppression des fichiers.

Précautions lors de la suppression

Avant de supprimer un environnement virtuel, assurez-vous qu’il ne contient plus de dépendances critiques pour d’autres projets ou parties de votre workflow. Bien que l’environnement virtuel soit isolé, il peut parfois être utilisé dans plusieurs branches d’un même projet, ou vous pourriez avoir oublié de sauvegarder un fichier requirements.txt avant de le supprimer.

Avant de supprimer un environnement virtuel, utilisez la commande pip freeze pour exporter la liste des packages installés dans un fichier requirements-xxx.txt. Cela vous permet de recréer facilement l’environnement à l’avenir si nécessaire.

Terminal window
pip freeze > requirements-xxx.txt

Alternatives à venv : virtualenv et pipenv

Bien que venv soit l’outil intégré par défaut dans Python pour gérer les environnements virtuels, il existe d’autres solutions offrant des fonctionnalités supplémentaires, notamment virtualenv et pipenv. Chacune a ses avantages et peut être mieux adaptée à certains workflows spécifiques.

Virtualenv

Virtualenv est une alternative plus ancienne que venv, mais elle reste populaire car elle offre une compatibilité avec les anciennes versions de Python (antérieures à 3.3). Elle fonctionne de manière similaire à venv en créant des environnements isolés, mais elle propose des fonctionnalités supplémentaires comme la gestion des environnements virtuels multiples et des options de personnalisation plus poussées.

Installation et utilisation

Terminal window
pip install virtualenv
virtualenv env_projetX
source env_projetX/bin/activate # ou env_projetX\Scripts\activate sur Windows

Bien que venv ait remplacé virtualenv dans de nombreux cas, virtualenv reste utile pour ceux qui travaillent avec des versions de Python plus anciennes.

Pipenv

Pipenv est un outil plus moderne qui combine la gestion des environnements virtuels avec la gestion des dépendances via un fichier Pipfile. Contrairement à venv ou virtualenv, Pipenv gère automatiquement les environnements et les fichiers de dépendances, offrant une expérience plus intégrée.

Installation et utilisation

Terminal window
pipx install pipenv
pipenv install
pipenv shell

Avec Pipenv, toutes les dépendances sont répertoriées dans un fichier Pipfile, et il offre également un fichier Pipfile.lock pour garantir la stabilité des versions lors des installations futures. Il simplifie aussi la gestion des environnements virtuels, en créant et activant automatiquement l’environnement approprié lorsque vous travaillez sur un projet.

Pipx : Exécuter des outils Python en isolation

Pipx est un autre outil intéressant dans l’écosystème Python, conçu spécifiquement pour installer et exécuter des outils Python en isolation, sans avoir à gérer un environnement virtuel manuellement pour chaque outil. Il est particulièrement utile pour installer des CLI (Command Line Interface) Python ou des outils de développement globaux sans affecter l’environnement Python global ou vos projets.

Pourquoi utiliser pipx ?

Contrairement à pip qui installe des packages Python dans l’environnement global ou un environnement virtuel spécifique, pipx installe et exécute chaque outil dans son propre environnement virtuel isolé. Cela signifie que vous pouvez utiliser des outils en ligne de commande Python, comme black (formateur de code) ou flake8 (analyseur de code), sans perturber les bibliothèques globales ou celles de vos projets.

Installation et utilisation de pipx

Pour installer pipx, vous pouvez utiliser pip :

Terminal window
pip install pipx

Ensuite, vous pouvez installer et exécuter un outil Python isolé avec pipx. Par exemple, pour installer et utiliser black :

Terminal window
pipx install black
black --version

Conclusion

Les environnements virtuels sont un élément fondamental de la gestion des projets Python. Ils permettent d’isoler les dépendances de chaque projet, évitant ainsi les conflits entre différentes versions de bibliothèques, et garantissent un environnement de développement propre et reproductible. Grâce à des outils comme venv, virtualenv, pipenv, et pipx, vous disposez de plusieurs options pour gérer vos environnements selon vos besoins spécifiques.

  • Venv est l’outil intégré à Python, simple et efficace pour la majorité des projets.
  • Virtualenv reste une bonne alternative, particulièrement pour les versions plus anciennes de Python.
  • Pipenv est idéal pour ceux qui recherchent une gestion plus automatisée des environnements virtuels et des dépendances.
  • Pipx se distingue en offrant une solution pratique pour installer et exécuter des outils en ligne de commande de manière isolée.

L’utilisation de ces outils vous assure non seulement un meilleur contrôle de vos projets Python, mais également une facilité de collaboration, de déploiement et de maintenance à long terme. En combinant ces pratiques avec la gestion des dépendances via pip et les fichiers requirements.txt, vous pouvez travailler sereinement sur des projets de plus en plus complexes, tout en maintenant une configuration stable et reproductible.

Adopter une bonne gestion des environnements virtuels est indispensable pour toute personne qui souhaite éviter les erreurs dues à des conflits de bibliothèques et garantir la pérennité de ses projets Python.

Plus d’infos