====== 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
# Créer un environnement virtuel avec accès aux packages du système hôte
python -m venv --system-site-packages
# Activer l'environnement virtuel
source /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
Note: Pycharm peut gérer la création et l'activation des environnements virtuels :)
===== Avant Python 3.4 =====
Voici une [[http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/|source]] et une [[https://wiki.archlinux.org/index.php/Python_VirtualEnv|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