Outils pour utilisateurs

Outils du site


dev:python:environnements_virtuels

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

dev/python/environnements_virtuels.txt · Dernière modification : 2021/12/14 20:57 de yoann