{{tag>dev python virtualenv venv environnement virtuel}}
====== Environnements virtuels en Python ======
Plusieurs solutions existent. Depuis python 3.3 la bibliothèque **venv** est intégrée, c'est la solution recommandée avec Python3, l'usage de **virtualenv** est déprécié ou réservé à des besoins spécifiques.
**virtualenv** est une bibliothèque externe qui peut être utile notamment avec les plus anciennes versions de python ou pour construire un environnement avec un interpréteur Python différent.
Chaque environnement virtuel est isolé des autres et du système. Le script ou l'application Python peut ainsi déployer ses dépendances dans l'environnement virtuel **actif** sans impacter indirectement d'autres applications Python présentes sur le même système. Dans chaque environnement virtuel, on pourra utiliser une version spécifique de l’interpréteur Python, des modules et bibliothèques externes sans affecter les autres application ou le système hôte.
===== venv =====
==== Créer l’environnement virtuel ====
Dans cet exemple on crée un environnement virtuel que l'on nomme ''env1'':
python3 -m venv env1
L'opération aboutie à la création d'un dossier ''env1'' dans le répertoire courant. Il contient les binaires et l'arborescence nécessaire à la gestion de cet environnement virtuel.
Notons que le script ou le programme Python qui utilisera cet environnement **ne devra pas nécessairement se trouver dans le même répertoire** ni même dans env1. L'environnement virtuel devra simplement être activé avant appel du script.
Parmi les options disponibles à la création de l'environnement virtuel on trouve notamment:
^ --no-site-packages | n’inclura pas les paquets installés globalement sur le système hôte. |
^ --without-pip | n’intègre pas pip à l'environnement virtuel |
^ --prompt | définir le prompt de l'environnement virtuel |
==== Activer/désactiver l'environnement ====
Pour activer notre environnement virtuel ''env1'':
$ source ./env1/bin/activate
Lorsque le projet est actif, le prompt est modifié. Le nom de l'environnement virtuel apparait entre parenthèses. Pour sortir de l'environnement virtuel, exécuter le script **deactivate**:
(mon_projet)$ deactivate
===== virtualenv =====
==== Installer virtualenv ====
$ pip install --user virtualenv
Le script python est placé dans ~/.local/ vérifier que les droit d'execution sont positionnés et faire un lien symbolique dans un dossier contenu dans le path pour l'utilisateur.
$ chmod 554 ~/.local/lib/python2.7/site-packages/virtualenv.py
$ ln -s ~/.local/lib/python2.7/site-packages/virtualenv.py ~/bin/virtualenv
==== Créer un environnement virtuel ====
Pour créer un environnement virtuel, invoquer la commande virtualenv avec le path du projet. Des options peuvent être spécifiées à la création de l'environnement:
^ %%--%%python=/chemin/interpreteur | chemin de l’interpréteur python à utiliser. |
^ %%--%%system-sites-packages | L'environnement a accès aux bibliothèques de l'environnement global (par défaut ce n'est pas le cas) |
^ %%--%%no-site-packages | L'environnement virtuel ne bénéficie pas des packages installés sur le système local. |
$ virtualenv mon_projet
===== Activer/désactiver l'environnement virtuel =====
$ source mon_projet/env_monprojet/bin/activate
Lorsque l'environnement virtuel est actif, le nom de l'environnement apparaît entre parenthèses dans le prompt. Pour quitter l'environnement, il suffit de taper la commande **deactivate**:
$ deactivate
===== Références =====
* http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/
* https://apprendre-python.com/page-virtualenv-python-environnement-virtuel