Table des matières

Environnements virtuels pour Python

Dans l'histoire des environnements virtuels, il y a avant Python 3.4 où les environnements virtuels sont gérés par des outils tierces ; puis après Python 3.4 où un outil natif venv

Il y aussi conda pour gérer des environnements virtuels avec des versions de python no dispo sur le système hôte et/ou avec des paquets compilés nécessitant des dépendances).

Depuis Python 3.4 : venv

# Créer un environnement virtuel
python -m venv <path/to/directory>
 
# Créer un environnement virtuel avec accès aux packages du système hôte
python -m venv --system-site-packages <path/to/directory>
 
# Activer l'environnement virtuel
source </path/to/directory>/bin/activate   # note : selon l'interpreteur bash/zsh/.. il y a différents activate
 
# Désactiver l'environnement virtuel
deactivate
 
# Supprimer un environnement virtuel (non-activé)
rm -r <path/to/directory>

Note: Pycharm peut gérer la création et l'activation des environnements virtuels :)

Avant Python 3.4

Voici une source et une autre source, dont je me suis très largement inspirée pour cette entrée

Quand on commence à beaucoup programmer en python ou installer de nombreux services (mediagoblin, mailpile…), ça peut vite devenir le bazar et des conflits peuvent apparaître entre les différents modules ou leurs versions. Dans l'univers python, il existe cependant une solution assez simple d'emploi : virtualenv

virtualenv

installation

Disponible su pypi, on peut l'installer avec pip

pip install virtualenv

utilisation

créer un environnement

C'est tout simple :

virtualenv /path/vers/projet/nomEnv

Un dossier sera créé avec l'environnement python complet : interpréteur, modules …

on peut aussi choisir une version de l'interpreteur en particulier :

virutalenv monEnv -p /usr/bin/python2.6

On peut inclure ou exclure à la création de l'environnement les outils/modules du système (selon les versions, l'une ou l'autre option est activée par défaut) :

--no-site-package      # fournit un environnement vierge
--system-site-packages # tout ce qui est installé sur l'OS ou qui sera installé sera disponible dans l'environnement
utiliser un environnement

C'est pas compliqué non plus, depuis votre console bash :

source /path/vers/projet/nomEnv/bin/activate

le prompt de la console changera et vous serez dans l'environnement isolé. Si par exemple vous utilisez pip dans cet environnement, les modules seront installés seulement dans l'environnement

Pour quitter un environnement, tapez simplement :

deactivate
utiliser un script dans un environnement depuis l'extérieur

ça marche aussi, c'est un peu plus long à écrire :

/path/vers/projet/monEnv/bin/python mon_script.py
supprimer un environnement

virtualenvwrapper

virtualenvwrapper est un outil qui permet de se faciliter l'utilisation de virtualenv

installation

On peut trouver le paquet python-virtualenvwrapper dans les dépots, mais aussi sur pypi (pip !) Une fois le paquet/module installé, il faut configurer le bouzin, ça se passe dans ~/.bashrc

...
export WORKON_HOME=~/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # si le python par défaut n'est pas le 3
source /usr/bin/virtualenvwrapper.sh

Il faut ensuite créer ce dossier WORKON_HOME (note : la variable d'environnement ne sera active par défaut qu'après réouverture de la session puisqu'elle est renseignée dans .bashrc)

mkdir $WORKON_HOME

utilisation

créer un environnement

Les options sont identiques à virtualenv, mais ce coup ci le chemin peut être relatif (ce sera mis dans WORKON_HOME)

mkvirtualenv -p /usr/bin/python2.6 monEnv
travailler dans un environnement
workon monEnv

Une fois dans l'environnement, rien ne change, installation via pip dans l'environnement, deactivate

supprimer un environnement

tout simplement :

rmvirtualenv monEnv