<!-- title: Migration de Poetry vers Rye -->
<!-- category: Développement -->

J'ai beaucoup apprécié le récent article paru sur LinuxFr à propos de [la distribution de paquets Python](https://linuxfr.org/news/l-installation-et-la-distribution-de-paquets-python-1-4). Alors que je pratique Python en dilettante depuis des années je ne connaissais qu'une partie de la longue et sinueuse histoire de la standardisation des outils de gestion de paquets. Honte à moi mais j'étais passé à côté de l'organisme PyPa même si j'utilise Poetry qui suit peu ou prou ses recommandations, sans toutefois en faire partie. J'attends les épisodes suivants sur le même sujet avec impatience, celui paru étant estampillé 1 sur 4. 

L'article m'a fait découvrir des alternatives à Poetry dans la catégorie des outils tout en un pour gérer un projet Python et je me suis intéressé à [Rye](https://rye-up.com) en premier lieu car c'est un projet d'Armin Ronacher, le talentueux créateur du framework Web "Flask". Ensuite j'ai décidé de migrer mon projet Stacosys de Poetry vers Rye pour l'attrait de deux fonctionnalités phares :
- la gestion de l'interpréteur Python associé au projet. Nul besoin d'un outil à part comme PyEnv pour installer ses versions d’interpréteur et s'interfacer avec le gestionnaire de dépendances. Avec Rye c'est intégré. 
- une gestion complète et transparente  de l'environnement virtuel sous-jacent du projet : on ajoute, on supprime des dépendances, une commande "rye sync" et l'environnement virtuel est mis à jour. Un changement de version de l'interpréteur ? Une commande "rye pin <version>" pour fixer la version du projet (et l'installer) suivi d'un "rye sync" pour reconstruire l'environnement virtuel. C'est simple et puissant. 

Le portage du fichier *pyproject.toml* a été facile et j'ai regroupé dans un Makefile les commandes principales de mon cycle de développement : check, test, run, build. Enfin j'ai adapté ma CI : build docker, tests, build natif avec PyInstalller. Pas de souci de ce côté là non plus, une action setup-rye est publiée dans le MarketPlace et permet de composer ses workflows.

Voilà j'ai migré mon premier projet, tout est [dans GitHub](https://github.com/kianby/stacosys) pour celles et ceux intéressés.