Paketmanagement

Python-Paket­­ma­­na­ge­­ment: Ein neues, vielver­spre­chendes Tool namens UV

Share post:

In unserer Rolle als Data-Science und KI-Beratung suchen wir ständig nach Tools, die unsere Arbeit in unseren Kunden­pro­jekten effizi­enter machen. Eine bekannte Heraus­for­de­rung im Python-Ökosystem ist der Paket­ma­nager pip, beson­ders bei großen Projekten mit vielen Abhän­gig­keiten. Genau hier setzt UV von Astral an.

Unsere Situa­tion

In unseren Projekten ist Python die Sprache der Wahl. Das Ökosystem ist so ausge­reift und man kann auf Biblio­theken in unter­schied­li­chen Program­mier­spra­chen zugreifen, um bestimmte Dinge optimal auszu­führen. 

Eine bekann­ter­maßen komplexe Aufgabe ist aller­dings das

Managen von Depen­den­cies und Environ­ments.

Zum jetzigen Stand nutzen wir haupt­säch­lich poetry für das Python-Paket­ma­nage­ment, was uns ziemlich gut gefällt, nicht zuletzt wegen der einfa­chen Syntax, aber dennoch vielen manuellen Eingriffs­mög­lich­keiten. Nichts­des­to­trotz muss hier die korrekte Python-Version manuell instal­liert werden und das Auflösen der Depen­den­cies kann gerade bei großen Projekten etwas länger dauern. Als wir also von UV gehört haben, mussten wir es definitiv probieren!

Was bringt uns UV?

1. Speed!
UV ist beim Auflösen und Instal­lieren der Depen­den­cies unglaub­lich schnell. Das liegt vor allem an effizi­entem Caching, falls die Packages schon einmal auf der gleichen Maschine instal­liert waren, aber auch daran, dass UV komplett in Rust geschrieben ist und daher von den entspre­chenden Vorteilen dieser kompi­lierten Sprache profi­tiert.

2. Repro­du­zier­bar­keit!
Mit mehreren Entwick­lern an einem Projekt, unter­schied­li­chen Platt­formen und Dev-, Test- und Prod-Umgebungen kann es ziemlich komplex sein, immer die exakt gleichen Voraus­set­zungen zu schaffen. Dies kann zu Bugs führen, welche unter Umständen sehr schwierig zu identi­fi­zieren sind. UV übernimmt hier das komplette Manage­ment der Abhän­gig­keiten und der Entwick­lungs­um­ge­bung und stellt so sicher, dass auf jeder Platt­form mit den gleichen Voraus­set­zungen gearbeitet werden kann.

3. Syntax!
UV hat eine sehr ähnliche Syntax zu Poetry, was wir seit ca. zwei Jahren standard­mäßig in neuen Projekten nutzen. Auch die zugrun­de­lie­genden pyproject.toml sowie *.lock Dateien sind bereits von Poetry bekannt. Hier können mit einer sehr verständ­li­chen und weitge­hend bereits bekannten Syntax einen schnellen Wechsel herbei­führen.

4. Integra­tion!
UV integriert sich nahtlos in bestehende Workflows, sodass Entwickler nicht ihre Arbeit anpassen müssen. Bestehende requirements.txt-Dateien funktio­nieren direkt mit UV, und bekannte Befehle wie `pip install` können problemlos durch UV ersetzt werden.

Darüber hinaus hat das Team von Astral mit Ruff bereits ein sehr gutes Tool kreiert, das wir standard­mäßig nutzen. Dies gibt uns ein zusätz­li­ches Maß an Vertrauen und eine berech­tigte Hoffnung, dass auch UV stabil weiter­ent­wi­ckelt wird.

Fazit

UV bringt laut Hersteller Astral einige vielver­spre­chende Verbes­se­rungen für das Python-Paket­ma­nage­ment. Ich habe UV selbst in einem Toy-Projekt getestet und bin jetzt schon sehr angetan. Die beschrie­benen Vorteile in Bezug auf Perfor­mance, nahtlose Integra­tion und Unabhän­gig­keit von Python sind definitiv keine leeren Verspre­chungen. Es gibt noch deutlich mehr Möglich­keiten mit UV, für mich sind zum Beispiel die Workspaces sehr inter­es­sant, da wir viele Projekte basie­rend auf unabhän­gigen Micro­ser­vices haben, welche wir dann einheit­lich verwalten könnten.

Wir planen, UV in unseren zukünf­tigen Projekten auszu­pro­bieren und genau zu prüfen, ob die verspro­chenen Vorteile auch in realen Projekten erlebbar sind. Ebenso monitoren wir die weitere Entwick­lung und sind gespannt auf weitere Ideen von Astral!

Picture of Torben Windler

Torben Windler

Lead AI Engineer

Projektanfrage

Vielen Dank für Ihr Interesse an den Leistungen von m²hycon. Wir freuen uns sehr, von Ihrem Projekt zu erfahren und legen großen Wert darauf, Sie ausführlich zu beraten.

Von Ihnen im Formular eingegebene Daten speichern und verwenden wir ausschließlich zur Bearbeitung Ihrer Anfrage. Ihre Daten werden verschlüsselt übermittelt. Wir verarbeiten Ihre personenbezogenen Daten im Einklang mit unserer Datenschutzerklärung.