You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog/posts/2023/2023-11-19-rye-up.md

2.3 KiB

J'ai beaucoup apprécié le récent article paru sur LinuxFr à propos de la distribution de paquets Python. Alors que je pratique Python en dilettante depuis des années je ne connaissais qu'une partie de la longue histoire, sinueuse, 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'attend les épisodes suivants avec l'impatience, celui paru étant estampillé 1/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 en premier lieu car c'est un projet de 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 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'interpreteur 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 " 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.yml a été facile, à part une particularité pour les tests unitaires avec pytest qui m'a demandé un peu de recherche. Et j'ai regroupé dans un Makefile les commandes principales de mon workflow de développement (check, test, run, build). Enfin j'ai adapté mes workflows GitHub pour réaliser 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 pour celles et ceux intéressés.