Pakete und Paketmanager 
Python bringt bereits eine umfangreiche Standardbibliothek mit. Für viele Aufgaben lohnt es sich aber, auf fertige Pakete (engl. packages) zurückzugreifen, die auf PyPI , dem offiziellen Paketindex von Python, veröffentlicht werden - sei es zum Erstellen von Diagrammen, zum Abrufen von Webseiten oder für formatierte Ausgaben im Terminal.
Ein Paketmanager dient zum Installieren und Verwalten solcher Pakete. Klassisch wird dafür pip verwendet. In der Praxis ergibt sich damit aber schnell ein Problem: Installiert man Pakete "global", so können sich Projekte gegenseitig in die Quere kommen, z.B. wenn zwei Projekte unterschiedliche Versionen desselben Pakets benötigen. Deshalb arbeitet man mit sogenannten virtuellen Umgebungen (engl. virtual environments), sprich jedes Projekt erhält seine eigene, isolierte Sammlung an Paketen.
Genau hier setzt uv (gesprochen wie die Abkürzung für ultraviolet) an: Das Tool kombiniert einen sehr schnellen Paketmanager mit der Verwaltung virtueller Umgebungen und Abhängigkeiten (engl. dependencies) und deckt damit den gesamten Workflow eines Projekts ab.
Installation von uv 
Je nach Plattform erfolgt die Installation mittels eines Einzeilers im Terminal.
Unter Windows (PowerShell):
$> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Unter macOS/Linux:
$> curl -LsSf https://astral.sh/uv/install.sh | sh
Alternativ lässt sich uv auch mittels pip install uv installieren.
Nach einem Neustart des Terminals lässt sich die Installation überprüfen:
$> uv --version
Erscheint eine Versionsnummer, war die Installation erfolgreich.
Verwendung: ein kleines Beispiel 
Es soll das Paket rich verwendet werden, mittels dessen sich Ausgaben im Terminal farbig und formatiert darstellen lassen.
Dazu wird ein neues Projekt angelegt und das Paket installiert:
$> uv init paket_demo $> cd paket_demo $> uv add rich
Was dabei passiert:
uv initlegt ein neues Projekt an, sprich ein Verzeichnis mit der Konfigurationsdateipyproject.tomlund einem Python-Skriptmain.pyuv add richinstalliert das Paket und trägt es inpyproject.tomlein. Weiters wird eine Sperrdateiuv.lockmit den exakten Versionen aller Abhängigkeiten angelegt sowie eine virtuelle Umgebung im Verzeichnis.venverstellt
Nun wird der Inhalt von main.py durch folgendes Programm ersetzt:
from rich import print print("[bold green]Hallo[/bold green] vom Paket [italic]rich[/italic]!")
Die Ausführung erfolgt mittels uv run:
$> uv run main.py Hallo vom Paket rich!
Dabei wird das Skript automatisch in der virtuellen Umgebung des Projekts ausgeführt, sprich rich steht zur Verfügung, ohne dass die Umgebung selbst aktiviert werden muss.
Die wichtigsten Befehle im Überblick 
uv init NAME- legt ein neues Projekt anuv add PAKET- installiert ein Paket und trägt es inpyproject.tomleinuv remove PAKET- entfernt ein Paket wiederuv run SKRIPT- führt ein Skript in der virtuellen Umgebung des Projekts ausuv lock- schreibt die exakten Versionen aller Abhängigkeiten inuv.lockfestuv sync- stellt die Umgebung anhand vonuv.lockwieder her (z.B. nach einemgit clone)
Abhängigkeiten werden üblicherweise ohne .venv in der Versionsverwaltung gespeichert, uv.lock und pyproject.toml hingegen schon. Damit lässt sich ein Projekt auf einem anderen Rechner mittels uv sync exakt wiederherstellen.