Blog de Norore
Geek en perdition dans un monde qui va trop vite

Monter rapidement un environnement pour Python

12 May 2020 - Norore
Un terrarium décoratif posé sur un meuble.

J’ai eu envie de me remettre un peu à Python, parce que ça me manque un peu. Du coup, quoi de mieux que de se lancer dans un énième projet personnel secondaire, qui finira par pourrir dans son coin ? Sauf que, je n’ai pas non plus envie de risquer de pourrir mon système d’exploitation avec des paquets Python dans tous les sens. Et pour couronner le tout, ma mémoire ne se souvenait plus de comment faire un environnement virtuel en Python ! Du coup, hop, un petit billet rapide pour que ce soit plus rapide et facile de retrouver les informations pour un projet rapide et crade !

Information importante : mon système d’exploitation actuel est Arch Linux ! Pour ce billet, j’utilise le shell bash.

Initialisation

Par convention personnelle, je nomme mes environnements virtuels comme les projets sur lesquels je me lance. J’ignore si c’est écrit dans une PEP (Python Enhancement Proposals), je n’en n’ai pas l’impression, et il est tard, donc la lecture approfondie de la PEP 423, en langue anglaise, ça attendra un autre jour.

On va commencer dans le répertoire home, en créant un répertoire dédié aux environnements virtuels (venv) de Python, et on créé l’environnement go_explorer pour le projet du même nom :

mkdir .venv
python3 -m venv .venv/go_explorer

On a créé un environnement virtuel (venv) que l’on va pouvoir utiliser à loisir pour ce projet. Vérifions maintenant que tout fonctionne. Pour cela, on va créer le répertoire du projet, s’y déplacer et sourcer le script bash qui a été généré à la création du venv.

mkdir -p /chemin/go_explorer/
cd /chemin/go_explorer/
source ~/.venv/go_explorer/bin/activate

Pour savoir si on a bien changé le venv, on doit observer un changement dans le terminal, au niveau de l’invite de commande.

Avant :

[23:41:14] norore@landscape:go_explorer$ echo "Hello world!"

Après :

(go_explorer) [23:48:40] norore@landscape:go_explorer$ echo "Hello world!"

Installer un ou des paquets

Notre venv est prêt, on peut commencer à installer les paquets dont on va avoir besoin pour notre projet. Pour ma part, j’aimerai travailler sur de la conception de graphes avec la proposition d’une interface graphique. Je vais donc installer networkx et pyside2.

pip install --upgrade pip
pip install networkx
pip install pyside2

À tout moment il est possible de connaître la liste des paquets installés dans notre venv à l’aide de la commande suivante :

pip list
Package    Version
---------- --------
decorator  4.4.2
networkx   2.4
pip        20.1
PySide2    5.14.2.1
setuptools 41.2.0
shiboken2  5.14.2.1

Sauver la liste des paquets

Vous pourriez être amené, un jour, je vous le souhaite, de vouloir rendre votre projet disponible afin que de gentilles personnes puissent elles aussi y contribuer. Pour cela, il va falloir que vous puissiez leur donner la liste des paquets Python utilisés par votre projet. pip propose justement une commande pour « geler » la liste des paquets, en les inscrivant dans un fichier :

pip freeze > requirements.txt

À ce stade, voici ce que contient notre fichier requirements.txt :

decorator==4.4.2
networkx==2.4
PySide2==5.14.2.1
shiboken2==5.14.2.1

Il y a deux paquets de moins, par rapport à la liste fournie par pip list, ce sont en fait des paquets Python fournissant les outils de base pour votre développement ! Les autres paquets, en plus de ceux venant des commandes d’installation qui ont été exécutées plus tôt, sont, vraisemblablement, des paquets dont les paquets d’intérêt dépendent, et que pip a installé.

Ainsi, pour une installation ultérieure, ou si vous souhaitez contribuer à un projet existant et installer la liste des paquets dont vous allez avoir besoin, il vous suffit de donner le fichier requirements.txt à pip :

pip install -r requirements.txt

Quitter l’environnement

Vous avez fini de travailler sur votre environnement et vous souhaitez maintenant faire autre chose, comme interroger la météo avec votre script shell préféré, mais vous êtes bloqué dans votre venv. Pas de panique, le script bash qui a été sourcé, activate, fourni une fonction pour quitter votre venv :

deactivate

Et c’est tout. Vous avez maintenant les bases pour vous lancer. Et ça vous aura pris moins de temps à le faire que moi à écrire ce petit billet !


Source de l’image d’accroche : Un terrarium décoratif posé sur un meuble. Photographie de Maud Bocquillod sur Unsplash

Sources :