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