Si vous êtes passionné par la programmation python, votre hdd regorge certainement de projets python en tout genre (Si ce n’est pas encore le cas, ce n’est certainement qu’une question de temps). Tous ces projets utilisent parfois les mêmes libs mais de versions différentes. Alors pour éviter de faire des pip uninstall à chaque fois que vous changez de projets, il existe une solution simple, les environnements virtuels. Un des plus populaires se nomme virtualenv (pour ceux qui utilisent python 3.3, virtualenv est utilisable par défaut sous le nom de venv).

Un environnement virtuel permet donc de créer un espace confiné utilisant sa propre version de python et ses propres versions de libs. Voyons maintenant tous les avantages que cela offre et comment mettre ça en place.

Installation de virtualenv et création d’un environnement python < 3.3

Comment installer virtual env?

Que vous utilisiez python version 2.7 ou tout autre version inférieure à 3.3, vous allez devoir installer virtualenv. Pour ce faire, il suffit de passer par le gestionnaire de paquets pip.

pip install virtualenv

Création d’un environnement virtuel

Pour créer un environnement virtuel, rien de plus simple. Placez-vous dans le dossier contenant votre projet et taper la commande :

cd /path_vers_mon_projet
virtualenv env_name
#env_name correspond au nom du dossier dans lerquel votre environnement virtuel sera placé

Cette commande aura pour effet d’installer une copie de python, une copie de pip et de wheel dans le dossier que vous aurez spécifié.

Vous pouvez également spécifier quelle version de python vous souhaitez utiliser avec le paramètre -p :

virtualenv -p python3 env_name
#Si cela ne fonctionne pas, remplacez "python3" par le chemin absolu vers celui-ci, généralement /usr/bin/python3 sous Ubuntu. (tapez 'whereis python3' dans un terminal pour le savoir)

Venv avec python >= 3.3

Si vous utilisez la version 3.3 ou supérieure de python, virtualenv vient pré-installé. La création de l’env. virtuel est sensiblement la même, excepté qu’au lieu de passer par la commande virtualenv, vous passerez par python avec le paramètre -m venv :

cd /path_vers_mon_projet
python3 -m venv env_name

Activer et utiliser un environnement virtuel

Pour activer et commencer à travailler dans votre environnement virtuel, il vous suffit de faire (sous linux et sous MacOS) :

source ./env_name/bin/activate

Si vous êtes sous Windows il suffit d’excécuter :

env_name\Scripts\activate.bat

Une fois votre environnement virtuel activé, votre prompt devrait changer et afficher le nom de celui-ci entre parenthèses :

(env_name) culture@geek:~$

Ceci vous donne la confirmation visuelle que votre env. virtuel est bien activé (dans cette console). À partir de ce moment, toutes les libs que vous installerez (avec pip) ou utiliserez dans vos scripts python seront celles provenant de votre env. virtuel. Attention, vous devez rester dans le même terminal pour que cela fonctionne (ou le réactiver dans un autre).

Pour sortir à tout moment de votre environnement virtuel tapez :

(env_name) culture@geek:~$ deactivate
culture@geek:~$

Virtualenvwrapper sous ubuntu, MacOS ou Windows

Plus vous allez multiplier les environnements virtuels, plus vous allez vous rendre compte que cela devient compliqué à gérer. Heureusement pour vous, des developpeurs ont eu le même soucis et ont créé virtualenvwrapper.

Ce merveilleux petit outil va vous permettre de centraliser vos environnements virtuels et de passer d’un à l’autre facilement.

Installer virtualenvwrapper sous MacOS ou linux

L’installation sous MacOS, Ubuntu ou tout autre linux est assez simple :

pip install --user virtualenvwrapper

#Ajoutez ensuite ces lignes tout en bas du fichier .bashrc avec nano vi vim ou votre éditeur de texte préféré (nano ~/.bashrc)
export WORKON_HOME=~/.virtualenvs
source ~/.local/bin/virtualenvwrapper.sh

#Tapez ensuite exec bash ou redémarrez votre terminal
#Pour terminer, créez le dossier ~/.virtualenvs
mkdir -p $WORKON_HOME

Installer virtualenvwrapper sous Windows

Pour installer virtualenvwrapper sous WIndows, 3 solutions s’offrent à vous :

# Via pip
pip install virtualenvwrapper-win

# Via easy_install
easy_install virtualenvwrapper-win

# En clonant le repo github
git clone git://github.com/davidmarble/virtualenvwrapper-win.git
cd virtualenvwrapper-win
python setup.py install   # ou pip install .

#Vous pouvez également changer la var d'environnement WORKON_HOME si vous le désirer. Par défaut celle-ci est settée à %USERPROFILE%\Envs

Utilisation de virtualenvwrapper

Une fois l’installation terminée, vous aurez accès à de nouvelles commandes.

Pour créer un env. virtuel dans le dossier associé à la variable d’environnement WORKON_HOME :

mkvirtualenv env_name 

Pour activer un environnement virtuel quel que soit l’endroit où vous vous trouvez:

workon env_name

Pour supprimer un environnement virtuel :

rmvirtualenv env_name

Pour lister tous les env. virtuels :

lsvirtualenv

Trucs & astuces

Freezer un environnement

Il est possible de dumper l’ensemble des librairies installées dans un environnement et de les placer dans un fichier. Ceci est très utile si vous désirez exporter votre projet sur un autre système et automatiquement re-déployer l’installation des librairies. Cela peut également être utile si vous gittez votre projet. Au lieu de gitter le dossier de l’environnement virtuel, vous pouvez uniquement gitter le fichier de dépendances.

Pour freezer un environnement dans un fichier :

pip freeze > dependencies.txt

Un developpeur différent pourra donc facilement réinstaller votre environnement s’il dispose du fichier dependencies.txt via la commande suivante :

source ./env_name/bin/activate
pip install -r ./dependencies.txt

Gitignore

Si vous travaillez avec un outil de versionning tel que GIT, n’oublie pas d’ajouter le nom du dosser contenant votre environnement virtuel au .gitignore. Ceci vous évitera de pusher votre environnement par mégarde.

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
...
# Environments
env_name/

Problèmes que vous pourriez rencontrer

mkvirtualenv command not found

Si une quelconque commande ne fonctionne pas avec virtualenvwrapper. Assurez-vous d’avoir correctement setté la variable d’environnement WORKON_HOME. Assurez-vous également que le script virtualenvwrapper.sh soit correctement loadé dans le .bashrc avec la commande source.

source ~/.local/bin/virtualenvwrapper.sh

Il se peut également que le chemin vers le script soit différent si vous l’avez installé au niveau du système :

source /usr/local/bin/virtualenvwrapper.sh

En espérant que cet article vous a été utile. N’hésitez pas à laisser un commentaire avec vos remarques ou éventuelles questions 🙂

4 claps