diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c1be5b..feb7f13 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -286,8 +286,69 @@ #### Utiliser un environnement virtuel +Il faut avoir un environnement virtuel (nommé `.venv`) à la racine de +l'instance. +Le nommer `.venv` permet à VSCode, par exemple, de l'activer automatiquement. + +S'il n'existe pas encore, il faut le créer (attention: depuis la racine de l'instance): + +```sh +python3 -m venv .venv +``` + +Une fois qu'il existe, il ne faut pas oublier de l'activer avant de tester ses +programmes: + +```sh +source .venv/bin/activate +``` + #### requirements.txt +Le fichier `requirements.txt`, placé à la racine de l'instance, est utilisé au +lancement de l'instance pour installer les paquets python nécessaires. + +Il est donc primordial qu'il contienne les noms des paquets à installer, sous +peine d'avoir des services déficients. + +Pour n'avoir aucune surprise de comportement, il faut aussi y préciser la +version de chaque paquet (une version majeure plus récente que celle utilisée +pendant le développement peut planter le programme). + +Pour éviter que le service soit trop lent à démarrer, il ne faut installer *que +les paquets nécessaires*. + +> ⚠ Il est possible que d'autres services de la même instance soient écrits en +> python, et aient déjà ajouté leurs dépendances dans le fichier +> `requirements.txt`. +> C'est pourquoi il est nécessaire, avant toute chose, d'installer ces éventuels +> paquets (évidemment, *après avoir activé l'environnement virtuel*): +> +> ```sh +> pip install -r requirements.txt +> ``` + +> ⚠ Il faut être conscient qu'une instance peut héberger plusieurs services +> différents, potentiellement écrits par d'autres personnes, à des moments +> différents. +> Cela peut impliquer plusieurs choses: +> +> 1. conflit de versions d'un même paquet +> 2. rendre un service existant inopérant (en supprimant un de ses dépendances) + +Une bonne manière de savoir quels sont exactement les paquets à mettre dans +`requirements.txt`, et de lancer `pip freeze`, qui fournit les noms et les +numéros des paquets PIP à ajouter tels quels dans le fichier. + +```sh +$ pip freeze +joblib==1.3.1 +numpy==1.24.4 +scikit-learn==1.3.0 +scipy==1.10.1 +threadpoolctl==3.2.0 +``` + #### programme python Nommer le programme python comme le `.ini` (mais c'est le `.ini` qui détermine