J'ai Venvie de gérer les dépendances en python

Publié le 2019/02/06 (format ISO 8601) ~ 2 min.

Ce week-end dernier, j'ai participé à mon premier hackathon à l'université du Luxembourg à Belval, et c'était génial. J'ai beaucoup appris.
Il y a un point qui je veux aborder : les dépendances en Python. Cela me paraissait inutile avant, mais quand il s'agit d'une équipe de 4, il faut qu'on soit tous synchronisé sur les mêmes versions.
La stratégie est simple : 2 devs sur le front- et 2 devs sur le back-end. Petit topo : du React avec Webpack en front- et python, SQLite et Flask en back. Le tout déployé sur un serveur Google Cloud (avec AppEngine). Petit dépôt Git pour partager le code en live. J'étais sur le back en full Python.
Première question avec mon coéquipier : quelle version de Python ? 3.6 a été retenu. Cependant, il fallait aussi se synchroniser sur les versions des dépendances/packages/bibliothèques python.

Créer un environnement virtuel (EV) avec Venv et pip

Tout existe déjà super bien, il y a juste à savoir utiliser les outils. pip est parfait pour installer les dépendances. Besoin de Venv :

pip3 install venv

(en réalité, j'avais un alias pip='pip3', parce que je suis flemmard)

Comment ensuite créer l'EV ?

python -m venv PATH/venvenv

et tadaaa, un dossier (que j'ai nommé venvenv) contenant tout le necéssaire pour faire tourner une version de python. On l'active

source PATH/venvenv/bin/activate

et on observe un joli nom qui vient se glisser au début de la ligne de la console : (venvenv). C'est très rapide.
Pour en sortir, deactivate.

Gérer les dépendances

pip freeze nous donne les paquets déjà installés. On installe les suivants avec le magnifique pip install nom_des_packages sur l'ordi de mon coéquipier, et ce tout le long du week-end.
Bref, il a crée un simple requirements.txt. Ce fichier contient simplement la sortie de pip freeze. Avec la synchro du dépôt Git, j'ai effectué un pip install -r requirements.txt et hop tout est bon. Si le besoin est, je réexecute la commande pour me resynchroniser. Je suis prêt à coder. Magnifique !

Tags : #python,