Les environnements virtuels Python
Lorsque l’on code sur différents projets en même temps, on a vite tendance à avoir des dépendances concurrentes ou encore incompatible entre les projets ou avec l’OS. En Python, vous pouvez utiliser ce que l’on appelle les environnements virtuels. Ces environnements permettent de travailler sur différents projets de manière totalement isolée du point de vue de la version Python utilisée ainsi que du point de vue des dépendances.
Les environnements virtuels existent en Python2 avec virtualenv et ont été intégré au sein de Python3 avec venv à partir de la version 3.3. L’utilisation de ces environnement est sensiblement la même, seuls l’installation et la création de environnement diffèrent.
En Python 2
Installation de virtualenv
Pour construire des environnements virtuels, il vous faudra installer virtualenv
. 2 solutions s’offrent à vous pour installer cette bibliothèque. La première solution utilise le gestionnaire de paquet Debian.
# apt-get install python-virtualenv
La seconde solution utilise pip
, il vous faudra avoir installer pip
avant.
# apt-get install python-pip
Cette solution a l’avantage de bénéficier de la souplesse de pip
dans la gestion des versions et de mises à jour plus rapide que par le système de paquet.
$ pip install --user virtualenv
L’option --user
est facultative. Elle permet d’installer la bibliothèque dans le répertoire .local/
de votre HOME. Si c’est la première fois que vous utilisez cette option, il vous faudra rajouter ~/.local/bin
dans votre path en ajoutant la ligne suivante à la fin de votre .bashrc
.
PATH=$PATH:~/.local/bin
Création de l’environnement virtuel
Vous pouvez créer l’environnement virtuel via la simple commande suivante :
$ virtualenv ~/env/project
Votre environnement virtuel est créé. L’utilisation est décrite ci-dessous.
En Python 3 (>3.3)
Les versions de Python 3 inférieur à la release 3.3 ne possèdent pas de système d’environnement virtuel. Il a été intégré dans les bibliothèques standard de Python à partir de cette version. Si vous avez installé Python3 depuis les sources comme décrit dans l’article Installer Python depuis les sources, vous avez déjà le système d’environnement virtuel. Si vous avez installer Python3 depuis apt-get
, il vous faut installer le paquet suivant python3-venv
.
# apt-get install python3-venv
Création de l’environnement
La création de l’environnement est en tout point semblable à la création avec virtualenv
, on change juste le nom pour utiliser pyvenv
$ pyvenv ~/env/projet
Utilisation de l’environnement
Pour utiliser votre environnement virtuel, vous devez l’activer.
$ source ~/env/project/bin/activate
Cette commande activera votre environnement virtuel, la version Python et les bibliothèques utilisées seront celles incluses dans l’environnement virtuel. Le script activate
, changera votre PATH pour ajouter le PATH de l’environnement virtuel, modifiera votre PS1 pour ajouter le nom de l’environnement virtuel et déclarera la commande deactivate
qui vous permet de quitter l’environnement virtuel.
Gestion des dépendances
Au sein des environnements virtuels, il est fréquent d’utiliser pip
pour gérer les dépendances au projet. pip
est un gestionnaire de paquet spécifique à Python. Il peut être utilisé au sein d’un environnement virtuel ou non.
Pour installer un nouveau paquet, vous devez utiliser la commande suivante :
$ pip install
Une fois l’ensemble de vos dépendances installées dans votre environnement, vous souhaiterez certainement enregistrer la liste de ces dépendances. La commande suivante vous permettra de ressortir l’ensemble des dépendances installées :
$ pip freeze
Il est de norme d’utiliser un fichier requirements.txt
à la racine du projet pour répertorier l’ensemble des dépendances du projet. Pour constituer votre fichier requirements.txt
, vous pouvez utiliser la commande suivante :
$ pip freeze > requirements.txt
Si vous récupérez un projet contenant le fichier requirements.txt
, vous pouvez installer l’ensemble des dépendances requises via la commande suivante :
pip install -r requirements.txt
Plus d’informations :
Python3 – Creation of virtual environments
Pep 0405 – Python Virtual Environments
Python packaging – Creating Virtual Environments