2 points par GN⁺ 2024-08-23 | 1 commentaires | Partager sur WhatsApp

Réflexions et article d’Armin Ronacher

Rye et uv pour le packaging Python : août est la saison des récoltes

  • Il y a quelques mois, il a confié la maintenance de l’outil de packaging Rye à Astral
  • L’équipe d’Astral a développé ces derniers mois de nombreux outils pour le packaging Python
  • Dans les versions récentes, uv a ajouté des fonctions comme la manipulation des fichiers pyproject.toml, la prise en charge des workspaces, les références à des paquets locaux et l’installation de scripts
  • uv peut aussi gérer l’installation de Python, ce qui le rend très proche de Rye
  • Les utilisateurs de Rye devraient suivre uv de près et faire remonter leurs retours

Présentation à EuroPython

  • Lors d’EuroPython, qui s’est récemment tenu à Prague, il a présenté sa vision du packaging Python et les leçons tirées de la création de Rye
  • L’objectif des outils de packaging est de devenir le meilleur outil utilisé par tout le monde
  • Python est devenu une plateforme extrêmement populaire grâce aux investissements et à l’intérêt autour de l’IA et du ML
  • Il souhaite que les personnes qui apprennent Python gardent en mémoire une excellente expérience de développement
  • Aujourd’hui, cela reste difficile à cause du trop grand nombre d’outils et de leurs incohérences

La domination des outils

  • La domination signifie que l’essentiel des investissements se concentre sur une seule stack
  • Des outils comme Rye devraient disparaître une fois qu’un outil dominant sera établi
  • uv a de fortes chances de devenir cet outil
  • À terme, Rye sera remplacé par uv

Évolution de l’écosystème du packaging

  • De nombreux outils de packaging ont été construits sur les avancées de l’écosystème Python
  • Il y a eu de nombreuses évolutions, comme la transition des fichiers setup.py vers eggs puis wheels, ainsi que l’introduction de standards de métadonnées
  • L’évolution des crates Rust et des bibliothèques Python a rendu ces outils possibles

Prochaines étapes pour la communauté

  • La communauté devrait recommander moins d’outils
  • Il fut un temps où ez_setup.py et easy_install étaient recommandés
  • Aujourd’hui, on recommande pip, pip-tools, poetry, PDM, etc.
  • Les mainteneurs de projets Python importants devraient essayer uv et réfléchir à l’opportunité de le recommander

Le financement VC d’Astral

  • Il faut réfléchir à l’impact futur du financement VC d’Astral
  • Au vu du code et des fonctionnalités de uv, même dans le pire des cas, la communauté sera en meilleure position qu’avant l’existence de uv

Résumé GN⁺

  • Cet article traite de l’évolution des outils de packaging Python et du rôle de la communauté
  • uv offre de nombreuses fonctionnalités et a de fortes chances de remplacer Rye
  • La communauté devrait recommander moins d’outils et essayer uv
  • Il faut prendre en compte l’impact futur du financement VC d’Astral
  • Parmi les outils aux fonctions similaires, on trouve pip, poetry et PDM

1 commentaires

 
GN⁺ 2024-08-23
Commentaire Hacker News
  • La dernière version de uv a considérablement raccourci le processus de publication de Home Assistant

    • Le temps de publication est passé d’environ 2,5 heures à environ 20 minutes
    • Plus de détails sont disponibles sur le blog des développeurs de Home Assistant
  • Au départ, on pouvait espérer qu’un nouvel outil résoudrait le problème du « packaging » Python, mais en réalité il s’agit de gestion de paquets

    • Personnellement, je n’ai jamais eu de gros problèmes avec la gestion de paquets Python
    • pip fonctionne généralement bien
  • Il est gênant de ne pas pouvoir facilement empaqueter une application Python en exécutable

    • En production, on voit souvent des git clone suivis de la création d’un virtualenv
    • Ce n’est pas idéal du point de vue de la sécurité
  • Il existe des problèmes de packaging en Python, mais on s’en est quand même assez bien sortis avec le pip de base

    • Le grand changement, à l’origine, a été le passage de virtualenv au module intégré venv
    • Si l’on veut gérer sérieusement les dépendances, il vaut mieux construire un monorepo comme les FAANG
  • Entre l’arnaque VC autour de npm, le rachat par Microsoft, et le statut juridique non lucratif d’OpenAI, il est difficile d’avoir envie de confier l’infrastructure clé d’un langage à ce type d’organisations

    • Les contributeurs individuels sont excellents, mais le problème vient de l’alignement financier au niveau des organisations
    • Un linter rapide, une vérification de types, un scan de code ou un assistant PR peuvent être remplacés à tout moment, mais pas le flux d’installation ni le dépôt de paquets
  • Le problème de ces outils, c’est l’autorité

    • Comme ils n’ont pas reçu l’aval de pypa, ce n’est pas comme cargo
    • pypa n’a pas su fournir une solution globale
    • Il y a encore 3 ou 4 ans, poetry et pipenv semblaient pouvoir résoudre le problème
    • pypa devrait s’impliquer dans astral.sh, mais on peut se demander si cela serait possible sans prise de contrôle
  • Armin soutient que uv devrait dominer ce domaine, tout en reconnaissant que le financement VC peut poser problème

    • Sa solution est que uv est très facilement forkable
    • Mais les forks entraînent davantage de fragmentation
  • Dans mon entreprise, nous essayons de migrer notre logiciel vers uv à cause de la lenteur de poetry

    • J’ai lu beaucoup de documentation, mais je n’ai pas réellement fait grand-chose
    • La migration précédente vers poetry avait été bien plus simple
    • uv conserve encore beaucoup des problèmes des paquets Python
  • On peut comprendre que certains passent leur tour cette fois-ci et attendent le « gestionnaire de paquets Python : cette fois, on a vraiment réglé le problème ! » de 2026

    • Les utilisateurs de Nix restent satisfaits
  • Certaines personnes sont passionnées par le développement de gestionnaires de paquets

    • Si cette situation continue, il y aura un nouveau gestionnaire de paquets chaque année