Environnements virtuels Python
Les scripts Python utilisent souvent des paquets et modules qui ne font pas partie de la bibliothèque standard. Ils nécessitent aussi, parfois, une version spécifique d'une bibliothèque, par exemple parce qu'un certain bug a été corrigé ou encore que le programme a été implémenté en utilisant une version obsolète de l'interface de cette bibliothèque.
Comment alors pouvoir exploiter une version n d'un module dans un programme et une version n-1 dans un autre. C'est pour cela que le mécanisme des environnement virtuels à été crée.
Bon maintenant il est devenu obligatoire dans pas mal d'installations de base. C'est par exemple le cas pour Raspberry OS (Debian pour Raspberry PI), en tout cas pour ma version Debian GNU/Linux 12 (bookworm).
Dans cette page on va réutiliser l'exemple de la doc.
tutorial-env
Création et utilisation
Création d'un environnement.
Pour créer un environnement on se déplace dans son répertoire parente et on le crée:
cd sources
python -m venv tutorial-env
C'est parfois un peu lent. prendre patience.
Activation
Un fois crée il faut l'activer :
source tutorial-env/bin/activate
l'environnement est alors lancé et configuré. On sait qu'on est connecté à un venv car l'invite de commande est changée. Le nom de l'environnement est ajouté avant.
$ source tutorial-env/bin/activate
(tutorial-env) $
On devra relancer le source chaque fois qu'on se délogue/relogue.
Désactivation
Le but initial est de pouvoir travailler sur plusieurs programmes sur la même machine qui possède des dépendances différentes. Il faut pouvoir changer de venv. Pour cela on a une commande pour "désactiver" un environnement. C'est la fonction symétrique de activate.
(tutorial-env) $ deactivate
$
Gestion des paquets
On utilise pip comme d'habitude. Par exemple si je veux installer pyttsx3:
python -m pip install pyttsx3
qui fonctionne comme si on était dans un environnement classique :
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyttsx3
Downloading https://www.piwheels.org/simple/pyttsx3/pyttsx3-2.99-py3-none-any.whl (32 kB)
Installing collected packages: pyttsx3
Successfully installed pyttsx3-2.99
on peut alors utiliser le module.
(tutorial-env) $ python3
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyttsx3
>>> engine = pyttsx3.init()
>>>
si on désactive le venv avec deactivate :
(tutorial-env) $ deactivate
$ python3
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyttsx3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyttsx3'
>>>
voila le module n'est plus installé.
Lors de la rédaction de cette page j'ai utilisé la doc officielle :https://docs.python.org/fr/3/tutorial/venv.html et l'aide de copilot https://m365.cloud.microsoft/chat/.