Environnement virtuel Python
OpenSUSE Leap offre une panoplie de paquets Python installables par le biais du
gestionnaire de paquets zypper
. Il arrive cependant qu'un module ne soit pas
disponible dans les dépôts de paquets. On pourrait être tenté de récupérer les
modules manquants par le biais de l'outil pip
, mais l'utilisation de pip
en
tant que root
est une très mauvaise idée, étant donné que l'on risque
d'écraser une partie des paquets Python installés au niveau du système.
La solution consiste ici à utiliser un environnement virtuel et d'installer les
applications tierces via pip
en tant qu'utilisateur simple, en redéfinissant
temporairement le PATH
lorsqu'on en a besoin.
Si l'on a déjà eu la mauvaise idée d'invoquer pip
en tant que root
, on peut
déjà commencer par faire le ménage dans les paquets Python :
# rm -rf /usr/lib/python3.6/site-packages/
# zypper install --no-recommends --download in-advance --force \
$(rpm -qa 'python*' --queryformat '%{NAME} ')
Créer l'environnement virtuel dans le répertoire utilisateur :
$ cd
$ python3 -m venv .venv
$ ls .venv/
bin include lib lib64 pyvenv.cfg
Le répertoire est nommé
.venv
par simple convention. Rien n'empêche de lui donner un nom commepython-virtual
oupython-local
.
Voici le PATH
par défaut de l'utilisateur :
$ echo $PATH
/home/microlinux/bin:/usr/local/bin:/usr/bin:/bin
Prendre en compte l'environnement virtuel :
source .venv/bin/activate
(.venv) $
Le PATH
est modifié en conséquence :
$ echo $PATH
/home/microlinux/.venv/bin:/home/microlinux/bin:/usr/local/bin:/usr/bin:/bin
Mettre à jour pip
:
(.venv) $ pip install --upgrade pip
La commande pip list
affiche les composants Python installés localement :
$ pip list
Package Version
---------- -------
pip 21.1.1
setuptools 44.1.1
À partir de là, je peux utiliser pip
pour installer des applications Python
qui ne sont pas disponibles dans les dépôts officiels et sans mettre en péril
l'intégrité de mon système :
(.venv) $ pip install mkdocs
(.venv) $ pip install mkdocs-material
(.venv) $ pip install speedtest-cli
$ pip list
Package Version
-------------------------- --------
click 8.0.0
future 0.18.2
importlib-metadata 4.0.1
Jinja2 3.0.1
joblib 1.0.1
livereload 2.6.3
lunr 0.5.8
Markdown 3.3.4
MarkupSafe 2.0.1
mkdocs 1.1.2
mkdocs-material 7.1.4
mkdocs-material-extensions 1.0.1
nltk 3.6.2
pip 21.1.1
Pygments 2.9.0
pymdown-extensions 8.2
PyYAML 5.4.1
regex 2021.4.4
setuptools 44.1.1
six 1.16.0
speedtest-cli 2.1.3
tornado 6.1
tqdm 4.60.0
typing-extensions 3.10.0.0
zipp 3.4.1
La commande deactivate
permet de quitter l'environnement virtuel :
$ which mkdocs
/home/microlinux/.venv/bin/mkdocs
(.venv) $ deactivate
$ which mkdocs
which: no mkdocs in (/home/microlinux/bin:/usr/local/bin:/usr/bin:/bin)
Et si l'on n'a plus besoin de l'environnement virtuel :
$ rm -rf ~/.venv
Cliquez ici pour offrir un café au rédacteur de cette documentation.