Remplacer Poetry par UV pour votre environnement de dev Python

J’ai eu de gros problèmes avec Poetry qui bloquait l’execution de ma CI/CD.

Je reprochais déjà à Poetry sa lenteur et sa mauvaise gestion des dépendances. Un comble pour un outil dont c’est censé être le coeur de métier.

J’ai donc été obligé de le remplacer par UV. Un outil en rust qui fait bien plus que Poetry.

  • 2 à 10 fois plus rapide que Poetry pour la mise à jour des dependances.
  • Installation et choix de la version de Python, compatible avec Pyenv.
  • Respect du format de configuration standard dans le fichier pyproject.toml.
  • packaging et publication de package
  • installation de votre package en mode éditable
  • gestion de l’environnement virtuel venv

Bref cette outil est incroyable !

L’image docker tikka-builder a maintenant UV pré installé pour le build de Tikka.

Voici un tutoriel en anglais pour vous aider à le prendre en main :

1 Like

C’est possible depuis Poetry v2.

C’était l’objectif de Poetry v2 qui a été atteinds il me semble.

Poetry gère déjà ces points, non ?

C’est sûr que le fait que ça soit écrit en Rust rends l’outil plus rapide, comme pour Ruff. Ces deux outils développés par l’entreprise Astral, qui a les moyens financiers, produits des logiciels bien plus compétitifs que des projets communautaires.

Ravi ! Je considère aussi son usage :slight_smile:

Oui, je liste tout ce que fait UV, même si cela est aussi possible dans Poetry.

Pour la gestion de l’environnement de développement Poetry proposait une gestion maison, par défaut, en plus de venv. Je la désactivais dans le container de ma CI/CD car inutile dans une image Python à usage unique et temporaire. UV ne fait que gérer venv.

Poetry est vraiment très bien pour tout, sauf pour la gestion des dépendances. Et c’est surtout ce qui m’intéresse. Combien de fois j’ai eu des crash de Poetry qui te laisse en plan avec un message d’erreur. Ou bien devoir attendre 6 minutes pour faire une mise à jour des dépendances. j’étais souvent obligé de repasser par pip pour comprendre les problèmes et les corriger.

Pour ma CI/CD, je passe de 3 minutes à 28 secondes ! Et avant la durée était longue et surtout variable. Maintenant elle est courte et immuable.

Encore une fois, Poetry me convenait jusqu’au moment où il s’est figé dans le gitllab-runner. J’ai passé 2 jours à essayer de le réparer sans succès. Obligé de basculer sur UV. Et heureusement, UV a répondu présent et amélioré ma CI/CD.

Je me suis posé la question si c’est une bonne pratique que de ne pas utiliser de venv dans un conteneur en CI/CD. Le projet Poetry recommande son usage même dans l’environnement conteneur. Ils ne précisent pour l’usage en CI/CD.

Il y a un potentiel conflit de dépendances.


Je viens de rapidement tester uv, c’est vrai que c’est rapide, ça fonctionne et c’est bien foutu ! Je vais creuser dans cette direction :wink:

> This is why it is recommended to always create a virtual environment. This is also true in Docker containers, as they might contain additional Python packages as well.
Oui, mais à partir du moment où c’est nous qui créons une image avec les dépendances Python dont on a besoin, préinstallées, et qu’on utilise pas “le système” du container pour autre chose que le build et les tests du projet, alors on ne risque pas grand chose, amha.