2 Punkte von GN⁺ 2024-08-23 | 1 Kommentare | Auf WhatsApp teilen

Gedanken und Texte von Armin Ronacher

Rye und uv für Python Packaging: Der August ist die Zeit der Ernte

  • Vor einigen Monaten wurde die Verwaltung des Packaging-Tools Rye an Astral übergeben.
  • Das Astral-Team hat in den vergangenen Monaten viele Werkzeuge für Python Packaging entwickelt.
  • In den jüngsten Releases hat uv Funktionen wie die Bearbeitung von pyproject.toml-Dateien, Workspace-Unterstützung, lokale Paketverweise und die Installation von Skripten hinzugefügt.
  • uv kann auch Python-Installationen verwalten und ist damit Rye sehr ähnlich geworden.
  • Wer Rye verwendet, sollte uv im Blick behalten und Feedback geben.

Vortrag auf der EuroPython

  • Auf der kürzlich in Prag abgehaltenen EuroPython wurden Ansichten zum Python Packaging und die beim Aufbau von Rye gewonnenen Erkenntnisse vorgestellt.
  • Das Ziel eines Packaging-Tools ist es, das beste Werkzeug zu werden, das alle verwenden.
  • Python ist dank der Investitionen und Aufmerksamkeit rund um AI und ML zu einer äußerst populären Plattform geworden.
  • Es besteht der Wunsch, dass Menschen, die Python lernen, sich an eine großartige Developer Experience erinnern.
  • Derzeit ist das wegen zu vieler Tools und mangelnder Konsistenz schwierig.

Die Dominanz von Tools

  • Dominanz bedeutet, dass der Großteil der Investitionen in einen einzigen Stack fließt.
  • Tools wie Rye sollten verschwinden, sobald sich ein dominantes Werkzeug etabliert hat.
  • uv ist mit hoher Wahrscheinlichkeit dieses Werkzeug.
  • Am Ende wird Rye durch uv ersetzt werden.

Entwicklung des Packaging-Ökosystems

  • Viele Packaging-Tools wurden auf Grundlage der Weiterentwicklung des Python-Ökosystems aufgebaut.
  • Es gab zahlreiche Fortschritte, etwa den Übergang von setup.py-Dateien über eggs hin zu wheels sowie die Einführung von Metadatenstandards.
  • Die Entwicklung von Rust crates und Python-Bibliotheken hat diese Werkzeuge möglich gemacht.

Nächste Schritte der Community

  • Die Community sollte weniger Tools empfehlen.
  • Es gab eine Zeit, in der ez_setup.py und easy_install empfohlen wurden.
  • Heute werden pip, pip-tools, poetry, PDM und andere empfohlen.
  • Wer wichtige Python-Projekte pflegt, sollte uv ausprobieren und überlegen, ob es empfohlen werden sollte.

VC-Finanzierung von Astral

  • Es sollte darüber nachgedacht werden, welche Auswirkungen die VC-Finanzierung von Astral künftig haben wird.
  • Betrachtet man den Code und die Funktionen von uv, wird die Community selbst im schlimmsten Fall besser dastehen als vor der Existenz von uv.

Zusammenfassung von GN⁺

  • Dieser Text behandelt die Entwicklung von Python-Packaging-Tools und die Rolle der Community.
  • uv bietet viele Funktionen und hat gute Chancen, Rye zu ersetzen.
  • Die Community sollte weniger Tools empfehlen und uv ausprobieren.
  • Die Auswirkungen der VC-Finanzierung von Astral auf die Zukunft sollten berücksichtigt werden.
  • Werkzeuge mit ähnlichen Funktionen sind unter anderem pip, poetry und PDM.

1 Kommentare

 
GN⁺ 2024-08-23
Hacker-News-Kommentare
  • Das neueste Release von uv hat den Release-Prozess von Home Assistant deutlich verkürzt

    • Die Release-Zeit sank von etwa 2,5 Stunden auf etwa 20 Minuten
    • Details dazu finden sich im Entwicklerblog von Home Assistant
  • Anfangs bestand die Hoffnung, dass ein neues Tool das Python-"Packaging"-Problem lösen würde, tatsächlich geht es aber eher um Paketverwaltung

    • Ich persönlich hatte mit der Python-Paketverwaltung nie große Probleme
    • pip funktioniert im Allgemeinen gut
  • Es ist lästig, dass sich Anwendungen in Python nicht einfach als ausführbare Datei paketieren lassen

    • In Produktionsumgebungen sieht man oft git clone und das Erstellen eines virtualenv
    • Aus Sicherheitssicht ist das nicht gut
  • Es gibt Probleme beim Python-Packaging, aber mit dem Standard-pip ist man auch schon ziemlich gut gefahren

    • Der eigentliche große Wandel war der Wechsel von virtualenv zum eingebauten Modul venv
    • Wenn man das Abhängigkeitsmanagement ernsthaft angehen will, ist es sinnvoll, wie FAANG ein Monorepo aufzubauen
  • Wegen des npm-VC-Betrugs und der Microsoft-Übernahme sowie des rechtlich gemeinnützigen Status von OpenAI zögert man, zentrale Sprachinfrastruktur solchen Organisationen anzuvertrauen

    • Einzelne Mitwirkende sind großartig, aber die finanzielle Ausrichtung auf Organisationsebene ist das Problem
    • Schnelles Linting, Type-Checking, Code-Scanning und PR-Assistenten lassen sich jederzeit austauschen, Installations-Workflows und Paket-Repositories hingegen nicht
  • Das Problem bei diesen Tools ist ihre Autorität

    • Da sie keine Zustimmung von pypa erhalten haben, ist die Situation anders als bei cargo
    • pypa konnte keine umfassende Lösung liefern
    • Noch vor 3–4 Jahren sah es so aus, als würden poetry und pipenv das Problem lösen
    • pypa müsste sich bei astral.sh einbringen, aber es ist fraglich, ob das ohne Kontrollanspruch möglich ist
  • Armin argumentiert, dass uv diesen Bereich dominieren sollte, räumt aber ein, dass die VC-Finanzierung Probleme verursachen könnte

    • Seine Lösung ist, dass sich uv sehr leicht forken lässt
    • Forks führen jedoch zu noch mehr Fragmentierung
  • Im Unternehmen versucht man wegen der Langsamkeit von poetry, die Software auf uv zu migrieren

    • Es wurde viel Dokumentation gelesen, praktisch umgesetzt wurde aber noch nicht viel
    • Die frühere Migration zu poetry war deutlich einfacher
    • uv schleppt weiterhin viele Probleme des Python-Packaging mit sich herum
  • Man kann verstehen, dass manche diese Runde auslassen und auf „Python-Paketmanager: Diesmal haben wir es wirklich gelöst!“ im Jahr 2026 warten

    • Nix-Nutzer sind weiterhin zufrieden
  • Es gibt Menschen, die mit Leidenschaft Paketmanager entwickeln

    • Wenn diese Situation so weitergeht, wird es jedes Jahr einen neuen Paketmanager geben