uv Einführungstutorial -- Python-Paket- und Umgebungsverwaltungstool
In der Python-Entwicklung sind Paketverwaltung und Umgebungsisolierung Probleme, denen jeder Entwickler begegnet. Ob es die Langsamkeit von pip, die Umständlichkeit von virtualenv oder die Aufgeblähtheit von conda ist,uvalles lässt Entwickler auf eine effizientere Lösung hoffen.
Was ist uv?
uv ist ein Python-Paketmanager und Umgebungsmanager, entwickelt von Astral in Rust. Sein Hauptziel ist es, eine Leistung bereitzustellen, die 10-100 Mal schneller ist als bei bestehenden Tools, während eine einfache und intuitive Benutzererfahrung erhalten bleibt.
uv kann Tools wie pip, virtualenv, pip-tools und pyenv ersetzen und bietet einen One-Stop-Service für Abhängigkeitsverwaltung, Erstellung virtueller Umgebungen und Python-Versionsverwaltung.
Vorteile von uv
- Extrem schnell: Da es in Rust geschrieben ist, übertrifft die Leistung von uv die von pip und anderen Paketverwaltungswerkzeugen bei Weitem, und die Geschwindigkeit der Installation von Abhängigkeiten kann um das 10- bis 100-Fache verbessert werden.
- Integrierte Funktionalität: Es vereint Abhängigkeitsauflösung, Paketinstallation, Umgebungsverwaltung und Python-Versionsverwaltung in einem, ohne dass mehrere Tools installiert und erlernt werden müssen.
- Deterministische Builds: uv erzeugt eine
uv.lockDatei, die sicherstellt, dass in jeder Umgebung genau dieselben Abhängigkeitsversionen installiert werden können, wodurch das Problem "läuft auf meinem Rechner" vermieden wird. - Kompatibilität mit bestehenden Tools: uv kann
requirements.txtundpyproject.toml, und kann pip nahtlos in bestehenden Workflows ersetzen.
Installation von uv
Installation unter macOS
Es wird empfohlen, die Installation über Homebrew durchzuführen:
brew install uv
Oder verwenden Sie das offizielle Installationsskript:
curl -LsSf https://astral.sh/uv/install.sh | sh
Installation unter Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Installation unter Windows
Verwendung von Winget:
winget install uv
Oder verwenden Sie das offizielle Installationsskript (PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
Überprüfen Sie nach der Installation, ob sie erfolgreich war:
uv --version
Die Ausgabe ähnelt der folgenden und zeigt an, dass die Installation erfolgreich war:
uv 0.8.14 (Homebrew 2025-08-28)
1. Verwalten von Python-Versionen
uv verfügt über integrierte Funktionen zur Verwaltung von Python-Versionen, sodass keine zusätzlichen Tools wie pyenv installiert werden müssen.
Verfügbare Python-Versionen anzeigen:
uv python list
Das Ausgabeergebnis ist ähnlich wie das folgende:
cpython-3.14.0rc2-macos-aarch64-none <download available> cpython-3.13.7-macos-aarch64-none <download available> cpython-3.12.11-macos-aarch64-none <download available> cpython-3.11.13-macos-aarch64-none <download available> cpython-3.10.18-macos-aarch64-none <download available> cpython-3.9.6-macos-aarch64-none /usr/bin/python3 pypy-3.11.13-macos-aarch64-none <download available>
Eine bestimmte Version von Python installieren:
# 安装最新的 Python 3.12 uv python install 3.12 # 安装特定版本 uv python install 3.11.6 # 安装 PyPy 版本 uv python install pypy3.10
Die globale Standard-Python-Version festlegen:
uv python default 3.12
Die Python-Version für das aktuelle Projekt festlegen (dadurch wird eine.python-versionDatei erstellt):
uv python pin 3.12
Nach Ausführung dieses Befehls wird eine .python-version-Datei im aktuellen Projektverzeichnis erzeugt. Beim Öffnen zeigt sie den Inhalt der Versionsnummer an:
3.12
2. Verwalten virtueller Umgebungen
Virtuelle Umgebung erstellen:
# 在当前目录创建名为 .venv 的虚拟环境(使用系统默认 Python) uv venv # 使用指定 Python 版本创建虚拟环境 uv venv --python 3.12
Virtuelle Umgebung aktivieren:
# macOS / Linux source .venv/bin/activate # Windows(PowerShell) .venv\Scripts\activate
Virtuelle Umgebung verlassen:
deactivate
In der täglichen Entwicklung können Sie
uv runum Skripte direkt auszuführen, ohne die virtuelle Umgebung manuell zu aktivieren.
3. Paketverwaltung (pip-Kompatibilitätsmodus)
uv bietet eine Kommandozeilenschnittstelle, die vollständig mit pip kompatibel ist und pip-Befehle in bestehenden Workflows direkt ersetzen kann:
Pakete installieren:
# 安装最新版本 uv pip install requests # 安装特定版本 uv pip install requests==2.31.0 # 从 requirements.txt 批量安装 uv pip install -r requirements.txt
Pakete aktualisieren:
uv pip install --upgrade requests
Pakete deinstallieren:
uv pip uninstall requests
Installierte Pakete anzeigen:
uv pip list
Die Abhängigkeiten der aktuellen Umgebung nach requirements.txt exportieren:
uv pip freeze > requirements.txt
4. Projektverwaltung (Empfohlene Vorgehensweise)
uv unterstützt einenpyproject.toml-zentrierter moderner Projektmanagement-Ansatz, der empfehlenswerter ist als der pip-Modus, besonders geeignet für Teamzusammenarbeit und Multi-Umgebungs-Deployment.
Initialisieren eines Projekts
uv init my_project cd my_project
Dadurch wird die folgende grundlegende Projektstruktur erstellt:
my_project/ ├── pyproject.toml # 项目配置和依赖声明 ├── .python-version # 固定 Python 版本 ├── README.md └── main.py
Hinzufügen und Entfernen von Abhängigkeiten
Im Projektmodus wird empfohlen,uv addunduv removezur Verwaltung von Abhängigkeiten zu verwenden; sie werden automatisch aktualisiertpyproject.tomlunduv.lock:
# 添加生产依赖 uv add requests # 添加指定版本的依赖 uv add "requests>=2.31.0" # 添加开发依赖(只在开发环境使用,如测试框架) uv add --dev pytest ruff # 移除依赖 uv remove requests
Installieren aller Projektabhängigkeiten (uv sync)
Nach dem Klonen des Projekts oder dem Aktualisierenpyproject.toml, führen Sie den folgenden Befehl aus, um alle Abhängigkeiten mit einem Klick zu installieren:
uv sync
uv sync-Erklärung:Ähnlich wie
pip install -r requirements.txt, wird es, basierend aufpyproject.tomlunduv.lockalle Abhängigkeiten installieren und dabei sicherstellen, dass die Umgebung genau dieselbe ist wie die anderer Entwickler. Wenn die Installation langsam ist, können Sie inpyproject.tomleine inländische Mirror-Quelle festlegen:[tool.uv] index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
Generieren/Aktualisieren von Lock-Dateien
uv lock
Dieser Befehl analysiertpyproject.tomls Abhängigkeiten und generiert (oder aktualisiert) dieuv.lockDatei.uv.lockEs sollte in das Versionskontroll-Repository eingecheckt werden, um sicherzustellen, dass alle Teammitglieder genau dieselben Abhängigkeitsversionen verwenden.
5. Skripte ausführen (uv run)
uv runist ein sehr praktischer Befehl in uv, mit dem du, ohne die virtuelle Umgebung manuell zu aktivieren,direkt Skripte oder Befehle ausführen kannst. uv findet und verwendet automatisch die richtige Umgebung:
# 直接运行 Python 脚本 uv run main.py # 运行项目中的测试 uv run pytest # 运行任意命令(在虚拟环境的上下文中执行) uv run python -c "import requests; print(requests.__version__)"
Verwendunguv runhat im Vergleich zum manuellen Aktivieren der Umgebung diese Vorteile: Du verwendest nicht versehentlich die falsche Python-Version, noch vergisst du, die Umgebung zu aktivieren, sodass Pakete nicht gefunden werden. Es eignet sich besonders für den Einsatz in CI/CD und bei der Skriptautomatisierung.
Migration zu uv
Wenn du andere Tools verwendest, kannst du auf folgende Weise zu uv migrieren:
Migration von pip + virtualenv:
# 创建并激活虚拟环境 uv venv source .venv/bin/activate # 安装原有依赖 uv pip install -r requirements.txt
Migration von pip-tools:
# 编译依赖(替代 pip-compile) uv pip compile requirements.in -o requirements.txt # 同步环境(替代 pip-sync) uv pip sync requirements.txt
Migration von poetry oder pdm:
# 直接使用现有的 pyproject.toml uv syncAndere Erweiterungen