Python/Environnement virtuel

De ArchwikiFR

L'Environnement virtuel python virtualenv est un outil créant un espace de travail isolé pour une application Python. Il a divers avantages tels que la possibilité d'installer des modules localement, d'exporter un environnement de travail et d'exécuter un programme Python dans cet environnement.

Sommaire

Vue d'Ensemble

Un environnement virtuel est un dossier où sont installés des binaires et scripts shell .

Les binaires incluent python pour l'exécution des scripts et pip pour l'installation d'autres modules dans l'environnement.

Il y a aussi des scripts shell (pour bash, csh, et fish pour activer l'environnement.

Essentiellement, un environnement virtuel imite une installation système complète de Python et de tous les modules souhaités sans interférer avec aucun système sur lequel l'application pourrait fonctionner.

En 2017, python-pipenv a été publié, qui gère tous les outils ci-dessus: gestion des environnements virtuels des interpréteurs python, des dépendances de paquets, de leur activation et du verrouillage reproductible des versions dans Pipfiles.

Installation

Python 3.3+ fournit le module venv. Pour les applications qui requièrent une version antérieure de Python, utiliser virtualenv.

Paquets

Installer un de ces paquets des dépôts officiels pour utiliser un environnement virtuel Python.


Pour pip-env:

Usage

Les trois outils utilisent un flux de travail similaire

Création

Utilisez venv ou virtualenv pour créer l'environnement virtuel dans votre répertoire de projet. Assurez-vous d'exclure le répertoire venv du contrôle de version - une copie du retour de >venv pip freeze sera suffisante pour le reconstruire.

venv

Note : Cette méthode remplace le script pyvenv obsolète depuis python 3.6.

Outil fourni par python (3.3+):

$ python -m venv venv

virtualenv

Utiliser virtualenv pour Python 3, fourni par python-virtualenv.

$ virtualenv venv

Et virtualenv2 pour Python 2, de python2-virtualenv.

$ virtualenv2 venv

Activation

Se servir d'un de ces scripts fournis pour l'activation puis la désactivation de l'environnement. Exemple avec bash en shell implicite:

$ source venv/bin/activate
(venv) $

Une fois dans l'environnement virtuel, les modules peuvent être installés avec pip et les scripts peuvent être exécutés normalement. Sortir de l'environnement virtuel par cette fonction fournie par bin/activate:

(venv) $ deactivate

Versions de Python

Les versions binaires dépendent de l'outil d'environnement virtuel utilisé. Par exemple, la commande python utilisée dans l'exemple Python 2 pointe vers bin/python2.7, tandis que celle de l'exemple venv pointe vers bin/python3.7. Une différence majeure entre venv et virtualenv est que le premier utilise le binaire Python du système par défaut :

$ ls -l venv/bin/python3.7
  lrwxrwxrwx 1 jpf users 6 16 févr. 18:26 venv/bin/python3.7 -> python

L'outil virtualenv utilise un binaire Python séparé dans le répertoire de l'environnement :

$ ls -l virtualenv/bin/python3.7
  lrwxrwxrwx 1 foo foo 7 Jun  3 19:58 virtualenv/bin/python3.7 -> python3

virtualenvwrapper

virtualenvwrapper permet une interaction plus naturelle en ligne de commande avec vos environnements virtuels en exposant plusieurs commandes utiles pour créer, activer et supprimer des environnements virtuels. Ce paquet est une surcouche de python-virtualenv} et python2-virtualenv.

Installation

Installer le paquet python-virtualenvwrapper depuis les dépôts officiels.

Puis ajouter à votre ~/.bashrc les lignes:

export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

La ligne source /usr/bin/virtualenvwrapper.sh peut ralentir l'ouverture d'un nouveau shell. Corriger avec source /usr/bin/virtualenvwrapper_lazy.sh, qui chargera virtualenvwrapper la première fois qu'une fonction virtualenvwrapper sera appelée.

Redémarrer la console et créer le dossier WORKON_HOME :

$ mkdir $WORKON_HOME
Note : Cela semble se produire maintenant automatiquement après la réouverture de la console pour la première fois.

Utilisation basique

Principale source d'information sur l'utilisation du virtualenvwrapper (et sa capacité d'extension): page de Doug Hellmann.

Créez l'environnement virtuel :

$ mkvirtualenv -p /usr/bin/python2.7 my_env

Activer l'environnement virtuel:

$ workon my_env

Y installer quelques paquets, ex: (say, Django):

(my_env) $ pip install django

Une fois terminé votre travail, quitter l'environnement par:

(my_env) $ deactivate

Pipenv

pipenv permet une meilleure gestion des interactions en ligne de commande CLI en fournissant un seul programme qui remplit toutes les fonctions des outils ci-dessus.

Installation

Installer le paquet python-pipenv depuis les dépôts officiels.

Utilisation de base

Toutes les commandes peuvent être exécutées dans le dossier du projet, et pipenv reconnaîtra la situation spécifique - si un virtualenv existe dans le répertoire - le localisant et l'exécutant sur l'interpréteur virtuel spécifique lorsque pipenv est exécuté.

Pour plus d'informations : [1], [2].

Voir aussi