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.
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.
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 |
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
$ 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
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
$ 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