Comment configurer un environnement virtuel en Python et en quoi est-ce utile ?

Par : TutorialsGrey, le 17 Avril 2022

Lorsque vous développez des programmes, outils ou logiciels avec Python, une approche de base consiste à installer Python sur votre machine, à installer toutes les bibliothèques requises via le terminal, à écrire tout votre code dans un seul fichier avec l'extension .py, et à exécuter votre programme Python dans le terminal.

Il s'agit d'une approche courante pour de nombreux débutants et pour beaucoup de personnes qui passent de l'utilisation de Python à l'analyse de données.

 

Cela fonctionne bien pour les projets de script Python simples. Mais dans les projets de développement logiciel complexes, comme la création d'une bibliothèque Python, d'une API ou d'un kit de développement logiciel, vous serez souvent amené à travailler avec plusieurs fichiers, plusieurs packages et dépendances. Par conséquent, vous devrez isoler votre environnement de développement Python pour ce projet particulier.

 

Considérez le scénario suivant : Vous travaillez sur le Projet A, en utilisant le Python installé sur votre système et vous installez le packageX version 1.0 dans votre bibliothèque Python globale. Ensuite, vous passez au Projet B toujours sur votre machine, et vous installez le même packageX mais en version 2.0, qui comporte quelques modifications par rapport à la version 1.0.

 

Lorsque vous retournez exécuter votre application A, vous obtenez toutes sortes d'erreurs, et votre application ne fonctionne pas. C'est un scénario que vous pouvez rencontrer lorsque vous créez des logiciels avec Python. Pour contourner ce problème, nous pouvons utiliser des environnements virtuels.

 

Ce tutoriel couvre tout ce que vous devez savoir sur les environnements virtuels et sur la manière de les configurer avec Virtualenv.

 

 

Qu'est-ce qu'un environnement virtuel ?

La documentation officielle de Python définit un environnement virtuel comme suit :

"Un environnement virtuel est un environnement Python tel que l'interpréteur, les bibliothèques et les scripts Python qui y sont installés sont isolés de ceux installés dans d'autres environnements virtuels, et (par défaut) de toutes les bibliothèques installées dans un Python "système", c'est-à -dire un Python installé au sein de votre système d'exploitation".

 

Pour décomposer cela, lorsque vous activez un environnement virtuel pour votre projet, votre projet devient sa propre application autonome, indépendante du Python installé dans le système et de ses modules.

Votre nouvel environnement virtuel possède son propre pip pour installer les bibliothèques, son propre dossier de bibliothèques, où les nouvelles bibliothèques sont ajoutées, et son propre interprèteur Python pour la version de Python que vous avez utilisée pour activer l'environnement.

 

Avec ce nouvel environnement, votre application devient autonome et vous bénéficiez de certains avantages tels que :

  • Votre environnement de développement est contenu dans votre projet, devient isolé et n'interfère pas avec le Python installé sur votre système ou d'autres environnements virtuels.
  • Vous pouvez créer un nouvel environnement virtuel pour plusieurs versions de Python.
  • Vous pouvez télécharger des paquets dans votre projet sans privilèges d'administrateur.
  • Vous pouvez facilement faire un package votre application et la partager avec d'autres développeurs pour la répliquer.
  • Vous pouvez facilement créer une liste de dépendances et de sous-dépendances dans un fichier, pour votre projet, ce qui permet aux autres développeurs de reproduire et d'installer facilement toutes les dépendances utilisées dans votre environnement.

 

L'utilisation d'environnements virtuels est recommandée pour les projets de développement de logiciels qui se développent généralement à partir d'un seul script Python, et Python offre plusieurs façons de créer et d'utiliser un environnement virtuel.

Dans les sections ci-dessous, nous allons voir comment configurer votre environnement virtuel, en utilisant venv, qui vous donne un contrôle de plus bas niveau sur votre environnement.

Une autre façon courante de configurer votre environnement virtuel est d'utiliser pipenv, qui est une approche de plus haut niveau.

 

 

Comment installer un environnement virtuel en utilisant Venv ?

Virtualenv est un outil permettant de configurer vos environnements Python. Depuis Python 3.3, un sous-ensemble de cet outil a été intégré à la bibliothèque standard sous le module venv. Vous pouvez installer venv sur votre hôte Python en exécutant cette commande dans votre terminal :

 

pip install virtualenv

 

Pour utiliser venv dans votre projet, dans votre terminal, créez un nouveau dossier pour votre projet, accédez à ce dossier dans votre terminal, et exécutez la commande suivante :

 

python<version> -m venv <virtual-environment-name>

 

Comme ci-dessous :

 

mkdir projectA
cd projectA
python3.8 -m venv env

 

Lorsque vous vérifiez le nouveau dossier projectA, vous remarquerez qu'un nouveau dossier appelé env a été créé. env est le nom de notre environnement virtuel, mais il peut être nommé comme vous le souhaitez.

Si nous vérifions un peu le contenu de env, sur un Mac vous verrez un dossier bin. Vous verrez également des scripts qui sont généralement utilisés pour contrôler votre environnement virtuel, comme activate et pip pour installer des bibliothèques, et l'interpréteur Python pour la version de Python que vous avez installée, et ainsi de suite. (Ce dossier s'appellera Scripts sous Windows).

Le dossier lib contiendra une liste des bibliothèques que vous avez installées. Si vous y jetez un coup d'œil, vous verrez une liste des bibliothèques fournies par défaut avec l'environnement virtuel.

 

 

Comment activer l'environnement virtuel ?

Maintenant que vous avez créé l'environnement virtuel, vous devez l'activer avant de pouvoir l'utiliser dans votre projet. Sur un Mac, pour activer votre environnement virtuel, exécutez la commande ci-dessous :

 

source env/bin/activate

 

La commande ci-dessus va activer votre environnement virtuel. Vous remarquerez immédiatement que le chemin de votre terminal comprend env, ce qui signifie que l'environnement virtuel est activé.

Notez que pour activer votre environnement virtuel sur Widows, vous devrez exécuter la commande suivante (consulter ce lien pour bien comprendre les différences entre les plateformes) :

 

env/Scripts/activate.bat //In CMD
env/Scripts/Activate.ps1 //In Powershel

 

L'environnement virtuel fonctionne-t-il ?

Nous avons activé notre environnement virtuel, maintenant comment confirmer que notre projet est bien isolé de notre Python hôte ? Nous pouvons faire plusieurs choses à cet effet.

Tout d'abord, nous vérifions la liste des paquets installés dans notre environnement virtuel en exécutant le code ci-dessous dans l'environnement virtuel activé. Vous ne remarquerez que deux paquets - pip et setuptools, qui sont les paquets de base fournis par défaut avec un nouvel environnement virtuel.

 

pip list

 

Ensuite, vous pouvez exécuter le même code ci-dessus dans un nouveau terminal dans lequel vous n'avez pas activé l'environnement virtuel. Vous remarquerez qu'il y a beaucoup plus de bibliothèques dans votre Python hôte que vous avez pu installer dans le passé. Ces bibliothèques ne font pas partie de votre environnement virtuel Python tant que vous ne les avez pas installées.

 

 

Comment installer des bibliothèques dans un environnement virtuel ?

Vous pouvez facilement installer de nouvelles bibliothèques avec pip. L'environnement virtuel utilisera son propre pip, vous n'avez donc pas besoin d'utiliser pip3.

Après avoir installé les bibliothèques requises, vous pouvez visualiser toutes les bibliothèques installées en utilisant la commande pip list, ou vous pouvez générer un fichier texte listant toutes les dépendances de votre projet en exécutant le code ci-dessous :

 

pip freeze > requirements.txt

 

Vous pouvez nommer ce fichier requirements.txt ou comme vous le souhaitez.

 

 

Fichier Requirements

Pourquoi un fichier Requirements est-il important pour votre projet ? Considérez que vous assemblez votre projet dans un fichier zip (sans le dossier env) et que vous le partagez avec votre ami développeur.

Pour recréer votre environnement de développement, votre ami devra simplement suivre les étapes ci-dessus pour activer un nouvel environnement virtuel.

Au lieu de devoir installer chaque dépendance une par une, il pourra simplement exécuter le code ci-dessous pour installer toutes vos dépendances dans sa propre copie du projet :

 

~ pip install -r requirements.txt

 

Notez qu'il n'est généralement pas conseillé de partager votre répertoire env, et qu'il doit être facilement répliqué dans tout nouvel environnement.

Généralement, votre répertoire env sera inclus dans un fichier .gitignore (lors de l'utilisation de plateformes de contrôle de version comme GitHub) pour s'assurer que le fichier d'environnement n'est pas poussé vers le dépôt du projet (project repository).

 

 

Comment désactiver un environnement virtuel ?

Pour désactiver votre environnement virtuel, il suffit d'exécuter la commande suivante dans le terminal :

 

~ deactivate

 

 

Conclusion

Les environnements virtuels Python vous permettent d'isoler vos projets de développement Python du Python installé sur votre système et des autres environnements Python. Cela vous donne un contrôle total sur votre projet et le rend facilement reproductible.

Lorsque vous créez des applications qui se développent généralement à partir d'un simple script .py ou d'un notebook Jupyter, il est judicieux d'utiliser un environnement virtuel ; et vous savez maintenant comment en configurer un et commencer à l'utiliser.