Heim >Backend-Entwicklung >Python-Tutorial >Wir stellen vor: uv: Python-Paketmanager der nächsten Generation

Wir stellen vor: uv: Python-Paketmanager der nächsten Generation

Patricia Arquette
Patricia ArquetteOriginal
2024-12-19 06:34:26928Durchsuche

Die Entwicklung von Python ist eng mit Fortschritten in der Paketverwaltung verbunden, von manuellen Installationen bis hin zu Tools wie Pip und Poetry. Da Projekte jedoch immer komplexer werden, sind herkömmliche Tools oft nicht mehr so ​​schnell und effizient.

uv ist ein hochmodernes Python-Paket und ein mit Rust erstellter Projektmanager, der das ändern soll. Durch die Kombination der Funktionalität von Tools wie Pip, Poetry und Virtualenv rationalisiert UV Aufgaben wie Abhängigkeitsmanagement, Skriptausführung und Projekterstellung – und das alles mit außergewöhnlicher Leistung. Seine nahtlose Kompatibilität mit Pip-Befehlen erfordert keine zusätzliche Lernkurve.

In diesem Tutorial erfahren Sie, wie Sie UV installieren und seine Funktionen optimal nutzen. Von der Einrichtung eines Projekts und der Verwaltung von Abhängigkeiten bis hin zur Ausführung von Skripten und der Nutzung der erweiterten Pip-Schnittstelle.

Erste Schritte

Inhaltsverzeichnis

  • Pip-Einschränkungen
  • Was ist UV?
  • Hauptmerkmale von UV
  • Benchmarks
  • Installation
  • Erstellen virtueller Umgebungen
  • Erstellen einer Flaschen-App mit UV
  • Python mit UV installieren
  • Werkzeuge
  • Spickzettel
  • Aktuelle Einschränkungen

Pip-Beschränkungen

Pip ist ein weit verbreitetes, in Python geschriebenes Paketverwaltungssystem, das für die Installation und Verwaltung von Softwarepaketen entwickelt wurde. Trotz seiner Beliebtheit wird es jedoch oft als eines der langsamsten Paketverwaltungstools für Python kritisiert. Beschwerden über „langsame Pip-Installation“ kommen so häufig vor, dass sie häufig in Entwicklerforen und -threads auftauchen.

Ein wesentlicher Nachteil von pip ist seine Anfälligkeit für Abhängigkeitsgerüche, die auftreten, wenn Abhängigkeitskonfigurationsdateien schlecht geschrieben oder verwaltet werden. Diese Probleme können schwerwiegende Folgen haben, wie z. B. eine erhöhte Komplexität und eine verringerte Wartbarkeit von Projekten.

Eine weitere Einschränkung von pip ist die Unfähigkeit, Python-Code bei der Wiederherstellung von Laufzeitumgebungen konsistent genau abzugleichen. Diese Nichtübereinstimmung kann zu einer niedrigen Erfolgsquote bei der Abhängigkeitsinferenz führen, was es schwierig macht, Projektumgebungen zuverlässig neu zu erstellen.

Was ist UV?

uv ist ein moderner, leistungsstarker Python-Paketmanager, der von den Machern von Ruff entwickelt und in Rust geschrieben wurde. Es wurde als Ersatz für Pip und Pip-Tools entwickelt und bietet außergewöhnliche Geschwindigkeit und Kompatibilität mit vorhandenen Tools.

Zu den wichtigsten Funktionen gehören die Unterstützung bearbeitbarer Installationen, Git- und URL-Abhängigkeiten, Einschränkungsdateien, benutzerdefinierte Indizes und mehr. Die standardkonformen virtuellen Umgebungen von uv funktionieren nahtlos mit anderen Tools und vermeiden so Bindungen oder Anpassungen. Es ist plattformübergreifend, unterstützt Linux, Windows und macOS und wurde ausführlich anhand des PyPI-Index getestet.

UV konzentriert sich auf Einfachheit, Geschwindigkeit und Zuverlässigkeit und behebt häufige Probleme von Entwicklern wie langsame Installationen, Versionskonflikte und komplexes Abhängigkeitsmanagement und bietet eine intuitive Lösung für die moderne Python-Entwicklung.

Hauptmerkmale von UV

  • ⚖️ Drop-in-Ersatz: Ersetzt nahtlos Pip, Pip-Tools, Virtualenv und andere Tools mit voller Kompatibilität.
  • ⚡ Höchste Geschwindigkeit: 10–100x schneller als herkömmliche Tools wie Pip, Pip-Compile und Pip-Sync.
  • ? Speicherplatzeffizient: Nutzt einen globalen Cache für die Abhängigkeitsdeduplizierung und spart so Speicherplatz.
  • ? Flexible Installation: Installierbar über Curl, Pip oder Pipx, ohne dass Rust oder Python erforderlich sind.
  • ? Gründlich getestet: Bewährte Leistung im großen Maßstab mit den 10.000 besten PyPI-Paketen.
  • ?️ Plattformübergreifende Unterstützung: Vollständig kompatibel mit macOS, Linux und Windows.
  • ? Erweitertes Abhängigkeitsmanagement: Zu den Funktionen gehören das Überschreiben von Abhängigkeitsversionen, alternative Lösungsstrategien und ein Konfliktverfolgungslöser.
  • ⁉️ Klare Fehlermeldungen: Erstklassige Fehlerbehandlung stellt sicher, dass Entwickler Konflikte effizient lösen können.
  • ? Moderne Python-Funktionen: Unterstützt bearbeitbare Installationen, Git-Abhängigkeiten, direkte URLs, lokale Abhängigkeiten, Einschränkungsdateien und mehr.
  • ? Unified Tooling: Kombiniert die Funktionalität von Tools wie Pip, Pipx, Poetry, Pyenv, Twine und mehr in einer einzigen Lösung.
  • ?️ Anwendungs- und Skriptverwaltung: Installiert und verwaltet Python-Versionen, führt Skripte mit Inline-Abhängigkeitsmetadaten aus und unterstützt umfassende Projektworkflows.
  • ?️ Universelle Sperrdatei: Vereinfacht das Projektmanagement mit konsistenten und portablen Sperrdateien.
  • ? Arbeitsbereichsunterstützung: Bewältigt skalierbare Projekte mit Arbeitsbereichsverwaltung im Cargo-Stil.

Benchmarks

Introducing uv: Next-Gen Python Package Manager
Quelle: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
Auflösen (links) und Installieren (rechts) von Abhängigkeiten mithilfe eines Warm-Cache, Simulieren des Prozesses der Neuerstellung einer virtuellen Umgebung oder des Hinzufügens einer neuen Abhängigkeit zu einem vorhandenen Projekt.

Introducing uv: Next-Gen Python Package Manager
Quelle: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
Das Auflösen (links) und Installieren (rechts) von Abhängigkeiten mit einem kalten Cache simuliert die Ausführung in einer sauberen Umgebung. Ohne Caching ist uv 8–10x schneller als pip und pip-tools und mit einem warmen Cache erreicht es 80–115x schnellere Geschwindigkeiten.

Introducing uv: Next-Gen Python Package Manager
Quelle: https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
Erstellen einer virtuellen Umgebung mit (links) und ohne (rechts) Seed-Pakete wie Pip und Setuptools. uv ist etwa 80x schneller als python -m venv und 7x schneller als virtualenv, und das alles unabhängig von Python.

Installation

Die Installation von UV ist schnell und unkompliziert. Sie können sich für eigenständige Installationsprogramme entscheiden oder es direkt von PyPI aus installieren.

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

Bevor wir UV verwenden, müssen wir den UV-Pfad zu Umgebungsvariablen hinzufügen.
Ändern Sie für Linux und macOS die Umgebungsvariable PATH mit dem folgenden Befehl im Terminal:

export PATH="$HOME/.local/bin:$PATH"

Um unter Windows ein Verzeichnis zur PATH-Umgebungsvariablen für Benutzer und System hinzuzufügen, suchen Sie im Suchfeld nach Umgebungsvariablen. Wählen Sie unter Benutzervariablen/Systemvariablen die Pfadvariable aus, klicken Sie auf Bearbeiten, dann auf Neu und fügen Sie den gewünschten Pfad hinzu.

%USERPROFILE%\.local\bin

Introducing uv: Next-Gen Python Package Manager
Führen Sie nach der Installation den Befehl uv im Terminal aus, um zu überprüfen, ob die Installation korrekt durchgeführt wurde.

Introducing uv: Next-Gen Python Package Manager

Erstellen virtueller Umgebungen

Das Erstellen einer virtuellen Umgebung mit UV ist einfach und unkompliziert. Verwenden Sie den folgenden Befehl zusammen mit dem gewünschten Umgebungsnamen, um ihn zu erstellen.

uv venv
  • Führen Sie den folgenden Befehl aus, um die virtuelle Umgebung zu aktivieren.
# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

Pakete installieren

Die Installation von Paketen in der virtuellen Umgebung erfolgt nach einem vertrauten Prozess. Die verschiedenen Installationsmethoden sind unten aufgeführt.

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

Um die gesperrten Abhängigkeiten mit der virtuellen Umgebung zu synchronisieren, verwenden Sie den folgenden Befehl:

uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

uv unterstützt eine Vielzahl von Befehlszeilenargumenten, die denen bestehender Tools ähneln, einschließlich -r Anforderungen.txt, -c Einschränkungen.txt, -e ., --index-url und mehr.

Erstellen einer Flaschen-App mit UV

Lassen Sie uns einige projektbezogene Befehle mit UV erkunden. Beginnen Sie mit der Initialisierung eines Python-Projekts mit dem Namen „sample-project“.

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

Navigieren Sie zum Beispielprojektverzeichnis. uv initialisiert das Projekt mit wichtigen Dateien wie app.py, require.txt, README.md und mehr.

Introducing uv: Next-Gen Python Package Manager

Verwenden Sie den Befehl „run“, um die Beispiel-Python-Datei auszuführen. Dieser Prozess erstellt zunächst den Ordner der virtuellen Umgebung und führt dann die Python-Datei aus.

export PATH="$HOME/.local/bin:$PATH"

Introducing uv: Next-Gen Python Package Manager

Kolben installieren

Fügen Sie Flask zu Ihren Projektabhängigkeiten hinzu.

%USERPROFILE%\.local\bin

Erstellen Sie die Flask-Anwendung

Erstellen Sie ein neues und schreiben Sie den folgenden Code.

uv venv

Führen Sie die App aus

Verwenden Sie den Befehl uv run, um die Anwendung auszuführen.

# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

Öffnen Sie einen Browser oder verwenden Sie ein Tool wie Curl oder Postman, um eine GET-Anfrage zu senden.

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

Python mit UV installieren

Die Verwendung von uv zur Installation von Python ist optional, da es nahtlos mit vorhandenen Python-Installationen funktioniert. Wenn Sie jedoch die Installation von Python über uv bevorzugen, kann dies mit einem einfachen Befehl erfolgen:

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

Dieser Ansatz ist im Vergleich zu herkömmlichen Methoden oft bequemer und zuverlässiger, da die Verwaltung von Repositorys oder das Herunterladen von Installationsprogrammen entfällt. Führen Sie einfach den Befehl aus und das Setup ist einsatzbereit.

Werkzeuge

CLI-Tools können mit dem uv-Befehl installiert und verwendet werden. Beispielsweise können die Huggingface_hub-Tools installiert werden, um das Ziehen und Verschieben von Dateien in Hugging Face-Repositorys zu ermöglichen.

  • Verwenden Sie den folgenden Befehl, um Huggingface_hub mithilfe von UV zu installieren.
uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

Introducing uv: Next-Gen Python Package Manager

  • Der folgende Befehl zeigt alle installierten Tools an:
uv init sample-project

Introducing uv: Next-Gen Python Package Manager

Spickzettel

Hier ist ein kurzer Spickzettel für die Durchführung allgemeiner Vorgänge mit UV:

Introducing uv: Next-Gen Python Package Manager

Aktuelle Einschränkungen

Obwohl uv eine schnelle und effiziente Lösung für die Python-Paketverwaltung bietet, weist es einige Einschränkungen auf:

  • Unvollständige Pip-Kompatibilität: Obwohl uv einen wesentlichen Teil der Pip-Schnittstelle unterstützt, deckt es noch nicht den gesamten Funktionsumfang ab. Einige dieser Unterschiede sind bewusste Designentscheidungen, während andere darauf zurückzuführen sind, dass sich UV noch in einem frühen Entwicklungsstadium befindet. Einen detaillierten Vergleich finden Sie im Pip-Kompatibilitätsleitfaden.
  • Plattformspezifische Anforderungen.txt: Wie pip-compile generiert uv plattformspezifische Anforderungen.txt-Dateien. Dies steht im Gegensatz zu Tools wie Poetry und PDM, die plattformunabhängige poet.lock- und pdm.lock-Dateien erstellen. Daher kann es sein, dass die „requirements.txt“-Dateien von uv nicht über verschiedene Plattformen und Python-Versionen hinweg portierbar sind.

Vielen Dank für das Lesen dieses Artikels!!

Vielen Dank an Gowri M Bhatt für die Überprüfung des Inhalts.

Wenn Ihnen dieser Artikel gefallen hat, klicken Sie bitte auf den Herz-Button ♥ und teilen Sie ihn, damit andere ihn finden können!

Ressourcen

uv – Ein extrem schneller Python-Paket- und Projektmanager, geschrieben in Rust | docs.astral.sh

Das obige ist der detaillierte Inhalt vonWir stellen vor: uv: Python-Paketmanager der nächsten Generation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn