Der Titel dieses Beitrags bezieht sich auf „Python Packaging is Good Now“ von Glyph. Ich denke, man kann mit Sicherheit sagen, dass wir uns in diesen acht Jahren von „Gut“ zu „Großartig“ entwickelt haben. Lesen Sie weiter für meine Begründung.
Ich behaupte, dass die beiden Hauptschwierigkeiten bei der Python-Verpackung folgende sind:
Bootstrapping war ein oft vernachlässigtes Problem. Sollten wir den Leuten sagen, dass sie Python von https://python.org installieren sollen? Die Anaconda-Distribution? Wie verhindern wir, dass Leute ihren Systempaketmanager verwenden und riskieren, alles kaputt zu machen?
Und vergessen Sie nicht den gesamten Lebenszyklus der virtuellen Umgebung. Es ist so verrückt, wie abgestumpft ich als langjähriger Python-Benutzer geworden bin, aber jedes Mal, wenn ich es erklären muss, sehe ich die Gesichter meiner Schüler und denke: „Das ist nicht in Ordnung.“
Sicher, es gibt noch andere Probleme, etwa wie man verteilbare Pakete erstellt und veröffentlicht. Aber ich behaupte, dass die meisten Python-Anfänger davon nicht betroffen sind. Außerdem werden sie derzeit ebenfalls angegangen. Lesen Sie weiter.
Am 15. Februar veröffentlichte Astral UV und ich sprang sofort von Bord. Im Rahmen meiner Arbeit muss ich regelmäßig viele potenziell widersprüchliche Abhängigkeiten installieren, und UV war eine sofortige Erleichterung.
Aber das Interessante ist, dass uv nun weit über seine anfängliche Phase des „schnelleren Pip“ hinausgegangen ist und sein Versprechen erfüllt, „ein umfassender Python-Projekt- und Paketmanager zu sein, der schnell, zuverlässig und einfach zu verwenden ist“.
Um auf die Bootstrapping- und Aktivierungsprobleme zurückzukommen, die ich ganz am Anfang erwähnt habe: Wie löst UV sie? Bedenken Sie Folgendes:
Im Wesentlichen Folgendes:
$ mkdir uv-playground $ cd uv-playground $ uv init warning: `uv init` is experimental and may change without warning Initialized project `uv-playground` $ uv add click warning: `uv add` is experimental and may change without warning Using Python 3.12.3 interpreter at: /usr/bin/python3 Creating virtualenv at: .venv Resolved 3 packages in 66ms Built uv-playground @ file:///tmp/uv-playground Prepared 2 packages in 430ms Installed 2 packages in 0.62ms + click==8.1.7 + uv-playground==0.1.0 (from file:///tmp/uv-playground) $ tree . ├── pyproject.toml ├── README.md ├── src │ └── uv_playground │ ├── __init__.py └── uv.lock 3 directories, 4 files $ uv run python -c "from uv_playground import hello; print(hello())" warning: `uv run` is experimental and may change without warning Hello from uv-playground!
Daher können Sie auf die Frage „Wie fange ich an, Python auf meinem Computer zu lernen“ jetzt allgemein antworten: „Installieren Sie uv“.
Beim Thema virtuelle Umgebungen stimme ich im Wesentlichen mit Armin überein, wenn er sagt
npm kam ohne jegliches Äquivalent von „Aktivierung“ davon und ich denke, dass ein zukünftiges Python-Ökosystem auch in der Virtualenv-Aktivierung keinen großen Nutzen mehr finden wird.
Mir ist auch aufgefallen, dass uv init sich für Jungtiere entschieden hat. Ich hatte immer eine leichte Vorliebe für PDM, aber ich denke, dass dies ein Punkt sein könnte, an dem es kein Zurück mehr gibt.
Es hat Leah und ihren Mitwirkenden viel Arbeit gekostet, dieses Entscheidungsdiagramm für den PyOpenSci-Paketierungsleitfaden zu erstellen. Aber die Tatsache, dass es jetzt eine Grundlinie gibt, die die Leute ändern können, falls sie spezifischere Anforderungen haben (z. B. ein Meson- oder Scikit-Build-fähiges Build-Backend), sorgt wiederum für eine viel bessere Entwicklererfahrung.
Das Thema Conda vs. Pip ist eine weitere häufige Quelle der Verwirrung. Ich war seit dem ersten Tag ein Conda-Benutzer und -Fan, und es hat Python effektiv vor einem ganz klaren Tod bewahrt, zu einer Zeit, als es sehr schwierig war, einfach Dinge unter Windows zu installieren.
In den darauffolgenden Jahren habe ich mich oft auf den alten Blog-Beitrag von Jake VanderPlas bezogen, um die Unterschiede zu erklären, aber inzwischen sieht es aus wie eine verlorene Sache.
Die Interoperabilitätsprobleme zwischen Pip und Conda wurden nie vollständig angegangen, und obwohl ich denke, dass die Pixi-Leute einen fantastischen Job machen, denke ich, dass uv auf lange Sicht gewinnen wird.
Ich erkenne voll und ganz an, dass Conda-Pakete besser nach dem Konzept von Nicht-Python-Code strukturiert sind und dass die aktuelle Welt der „fetten Räder auf PyPI“ eindeutig eine suboptimale Lösung ist. Aber das gesamte Ökosystem hat sich in diese Richtung entwickelt: Die meisten Pakete veröffentlichen jetzt vorkompilierte Räder für eine Vielzahl von Plattformen.
Mit anderen Worten: Conda ist im Jahr 2024 möglicherweise nicht mehr so nützlich wie im Jahr 2014, und es könnte an der Zeit sein, es nicht mehr Anfängern beizubringen und es als fortgeschrittenes Werkzeug zu betrachten.
Der Grund dafür, dass es etwas zu früh ist, ist, dass einige dieser UV-Befehle noch experimentell sind und sich in Zukunft weiterentwickeln könnten. Aber zum ersten Mal überhaupt sehe ich eindeutig ein Workflow-Tool, das standardkonform, umfassend, frei von Bootstrapping-Problemen und sorgfältig konzipiert ist und das gewinnen kann.
Was viele Python-Verpackungskritiker schon immer wollten, oder? Sie müssen nicht aus vielen verschiedenen Tools wählen. Aber ich denke, uv ist weit darüber hinausgegangen und hat andere Probleme mit der Entwicklererfahrung gelöst, wofür ich glücklich und dankbar bin.
Ich nutze UV-Strahlung effektiv für alles und schaue nicht zurück. Ich werde dieses Tool weiterhin jedem empfehlen, weiter darüber sprechen und hoffe, dass es sich weiter verbreitet.
Das obige ist der detaillierte Inhalt vonPython-Paketierung ist jetzt großartig: „uv' ist alles, was Sie brauchen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!