Virtualenv et venv: les environnements virtuels Python expliqués

Parmi toutes les raisons pour lesquelles Python est un succès auprès des développeurs, l'une des plus importantes est sa sélection large et en constante expansion de packages tiers. Boîtes à outils pratiques pour tout de ingérant et le formatage des données aux mathématiques à grande vitesse et l' apprentissage de la machine sont juste un importou pip installloin.

Mais que se passe-t-il lorsque ces packages ne fonctionnent pas bien les uns avec les autres? Que faites-vous lorsque différents projets Python ont besoin de versions concurrentes ou incompatibles des mêmes modules complémentaires? C'est là que les environnements virtuels Python entrent en jeu.

Vous pouvez créer et travailler avec des environnements virtuels à la fois dans Python 2 et Python 3, bien que les outils soient différents. Virtualenv est l'outil de choix pour Python 2, tandis que venv gère la tâche en Python 3. 

Que sont les environnements virtuels Python?

Un environnement virtuel est un moyen d'avoir plusieurs instances parallèles de l'interpréteur Python, chacune avec différents ensembles de packages et différentes configurations. Chaque environnement virtuel contient une copie discrète de l'interpréteur Python, y compris des copies de ses utilitaires de support.

Les packages installés dans chaque environnement virtuel ne sont visibles que dans cet environnement virtuel et aucun autre. Même les packages volumineux et complexes avec des binaires dépendants de la plate-forme peuvent être séparés les uns des autres dans des environnements virtuels.

Il existe quelques cas d'utilisation courants pour un environnement virtuel:

  1. Vous développez plusieurs projets qui dépendent de différentes versions des mêmes packages, ou vous avez un projet qui doit être isolé de certains packages en raison d'une collision d'espace de noms. C'est le cas d'utilisation le plus standard.
  2. Vous travaillez dans un environnement Python où vous ne pouvez pas modifier le répertoire site-packages. Cela peut être dû au fait que vous travaillez dans un environnement hautement contrôlé, tel qu'un hébergement géré, ou sur un serveur sur lequel le choix de l'interpréteur (ou des packages utilisés) ne peut pas être modifié en raison des exigences de production.
  3. Vous souhaitez expérimenter une combinaison spécifique de packages dans des circonstances hautement contrôlées, par exemple pour tester la compatibilité croisée ou la compatibilité descendante.
  4. Vous souhaitez exécuter une version «de base» de l'interpréteur Python sur un système sans packages tiers et installer uniquement des packages tiers pour chaque projet individuel si nécessaire.

Rien ne dit que vous ne pouvez pas simplement décompresser une bibliothèque Python dans un sous-dossier d'un projet et l'utiliser de cette façon. De même, vous pouvez télécharger une copie autonome de l'interpréteur Python, la décompresser dans un dossier et l'utiliser pour exécuter des scripts et des packages qui lui sont consacrés.

Mais gérer de tels projets bricolés devient vite difficile. Cela semble plus simple au début. Travailler avec des packages qui ont des composants binaires ou qui reposent sur des dépendances tierces élaborées peut être un cauchemar. La meilleure solution à long terme consiste à utiliser les mécanismes natifs de Python pour créer et travailler avec des environnements virtuels.

Environnements virtuels en Python 3

Virtualenv s'est avéré indispensable pour d'innombrables développeurs Python, mais il ne fait pas partie de la bibliothèque standard de Python. Python 3 possède des outils natifs pour les environnements virtuels qui rendent l'ensemble du processus assez simple.

Vidéo connexe: Comment Python facilite la programmation

Parfait pour l'informatique, Python simplifie de nombreux types de travail, de l'automatisation du système au travail dans des domaines de pointe comme l'apprentissage automatique.

Créer l'environnement virtuel

Pour créer un environnement virtuel dans un répertoire donné, tapez:

python3 -m venv /path/to/directory

(Notez que vous pouvez simplement utiliser  pythonau lieu de python3if votre système reconnaît pythoncomme l'interpréteur Python 3 par défaut.)

L'ensemble du processus de configuration de l'environnement virtuel peut prendre une minute ou deux. Quand c'est fini, vous devriez avoir un répertoire contenant quelques sous-répertoires. Le sous-répertoire le plus important est  binsur Unix ou  Scriptssur Windows, où vous trouverez la copie de l'interpréteur Python pour l'environnement virtuel avec ses utilitaires.

Notez que comme chaque environnement virtuel contient sa propre copie de l'interpréteur Python, il peut être assez volumineux. Sur Windows et Linux, un environnement virtuel Python 3.6 consommera environ 23 Mo d'espace disque.

Activez l'environnement virtuel

Avant de pouvoir utiliser cet environnement virtuel, vous devez l' activer explicitement . L'activation fait de l'environnement virtuel l'interpréteur Python par défaut pour la durée de la session.

Vous devrez utiliser une syntaxe différente pour activer l'environnement virtuel en fonction du système d'exploitation et du shell de commande que vous utilisez.

  • Sous Unix ou MacOS, en utilisant le shell bash: source /path/to/venv/bin/activate
  • Sous Unix ou MacOS, en utilisant le shell csh: source /path/to/venv/bin/activate.csh
  • Sous Unix ou MacOS, en utilisant la coquille de poisson: source /path/to/venv/bin/activate.fish
  • Sous Windows à l'aide de l'invite de commandes:path\to\venv\Scripts\activate.bat
  • Sur Windows utilisant PowerShell: path\to\venv\Scripts\Activate.ps1

Notez que l'environnement activé ne fonctionne que pour le contexte dans lequel il a été activé . Par exemple, si vous lancez deux instances de PowerShell, A et B, et que vous n'activez l'environnement virtuel que dans l'instance A, cet environnement ne s'appliquera qu'à A. Il ne s'appliquera nulle part ailleurs.

Configurer et utiliser l'environnement virtuel

Une fois que vous avez activé le nouvel environnement virtuel, vous pouvez utiliser le gestionnaire de packages pip pour ajouter et modifier les packages correspondants. Vous trouverez pip dans le Scriptssous - répertoire de l'environnement virtuel sous Windows et dans le binsous - répertoire sous les OS Unix.

Si vous connaissez déjà le fonctionnement de pip, vous êtes prêt. Il devrait en être de même dans un environnement virtuel. Assurez-vous simplement que vous utilisez l'instance de pip qui gère les packages pour l'environnement virtuel dans le contexte où il a été activé, par exemple, la session bash ou la session Windows CLI / PowerShell. Si vous souhaitez vérifier que vous utilisez le bon pip et le bon environnement virtuel, tapez pip -Vet vérifiez que le chemin qu'il affiche pointe vers un sous-répertoire de votre environnement virtuel.

Pour utiliser l'environnement virtuel que vous avez créé pour exécuter des scripts Python, appelez simplement Python à partir de la ligne de commande dans le contexte où vous l'avez activé.

Désactiver l'environnement virtuel

Lorsque vous avez terminé d'utiliser l'environnement virtuel, vous pouvez simplement mettre fin à la session où vous l'utilisiez. Si vous souhaitez continuer à travailler dans l'environnement mais avec l'interpréteur Python par défaut à la place, saisissez deactivateà l'invite. Les utilisateurs Windows sur l'invite de commandes doivent s'exécuter à deactivate.batpartir du Scriptssous - répertoire, mais les utilisateurs Unix et Windows exécutant PowerShell peuvent simplement taper deactivatedans n'importe quel répertoire.

Suppression de l'environnement virtuel

Les environnements virtuels sont autonomes. Lorsque vous n'avez plus besoin de l'environnement virtuel, vous pouvez simplement supprimer son répertoire.

Environnements virtuels en Python 2

Avec Python 2, les environnements virtuels ne sont pas une fonctionnalité native du langage. Au lieu de cela, vous devez installer des bibliothèques tierces pour créer et gérer des environnements virtuels.

Le plus populaire et le plus utilisé de ces projets est virtualenv, qui gère la création de la structure de répertoires et la copie des fichiers nécessaires dans un environnement virtuel. Pour installer virtualenv, utilisez simplement pip install virtualenv. Pour créer un répertoire d'environnement virtuel avec lui, tapez virtualenv /path/to/directory. L'activation et la désactivation de l'environnement virtuel fonctionnent de la même manière que pour les environnements virtuels dans Python 3 (voir ci-dessus).

Utilisation d'environnements virtuels avec les notebooks Jupyter

Si vous utilisez des blocs-notes Jupyter (également appelés blocs-notes IPython) et que Jupyter est déjà installé dans tout le système, créez votre environnement virtuel et activez-le. Ensuite, à partir de votre répertoire d'environnement virtuel, exécutez pip install ipykernelpour ajouter les composants nécessaires pour IPython. Enfin, exécutez ipython kernel install —user —name=, où nom_projet est un nom que vous souhaitez associer à ce projet particulier. À partir de là, vous devriez pouvoir lancer Jupyter et basculer vers le noyau IPython que vous avez installé dans l'environnement virtuel.