Python
An Instrumenten für das Paket- und Umweltmanagement hat es Eco nie gemangelt, vom klassischen pip
undvirtualenv
bis zu pip-tools
undconda
und dann die Modernisierung der Poetry
undPDM
Und so weiter. Jedes Tool hat sein Fachgebiet, aber das macht die Toolchain eines Entwicklers oft fragmentiert und komplex.
Nun, von Astral
Unternehmen (bekannt) Python
Linter Ruff
(der Schöpfer der uv
Das Crossing hat neue Möglichkeiten eröffnet. Dieses Produkt verwendet Rust
in dieser Sprache geschriebene Werkzeuge, strebt eine Schnell, einheitlich und entwicklerfreundlich Python
Paket- und Projektmanager. Ihr Ziel ist klar: die Nutzung von Rust
ökologisch verträglich Cargo
Die erfolgreiche Erfahrung des Unternehmens bietet eine Lösung aus einer Hand.uv
Es ist nicht nur schnell, sondern integriert auch Umgebungsverwaltung, Paketinstallation, Auflösung von Abhängigkeiten, Projektmanagement und vieles mehr.
Warum UV?
Im Vergleich zu bestehenden Toolsuv
Sie bietet eine modernere und effizientere Alternative zu ihren wichtigsten Highlights:
- Signifikante Geschwindigkeitsverbesserung: Basierend auf
Rust
der Optimierung der Kompilierzeit und der effizienten gleichzeitigen Verarbeitung.uv
Bei gängigen Operationen wie der Auflösung von Abhängigkeiten und der Paketinstallation ist es schneller als herkömmliche Werkzeuge wie daspip
vielleichtPoetry
oft um Größenordnungen schneller. Der eingebaute effiziente globale Zwischenspeichermechanismus sorgt dafür, dass sich wiederholende Vorgänge fast sofort ausgeführt werden können. Dahinter steckt dasRust
Sprachmerkmale (z. B. furchtlose Gleichzeitigkeit durch Speichersicherheit) und hochwertige zugrunde liegende Bibliotheken (z. B. dieTokio
undReqwest
) Kredite. - Vollständige funktionale Integration::
uv
Es ist als "Schweizer Taschenmesser" für Entwickler gedacht und deckt alles ab, von der Erstellung und Verwaltung virtueller Umgebungen bis hin zum Installieren und Sperren von Abhängigkeiten (native Unterstützung).pyproject.toml
kompatibelrequirements.txt
), zur Ausführung von Skripten, zur Verwaltung globaler Tools und sogar zur Installation spezifischerPython
Version des gesamten Entwicklungsprozesses. - Modernes Projektmanagement: Native Unterstützung
pyproject.toml
(PEP 517/518/621-Standard), der die modernePython
Das de facto Standardprofil des Projekts.uv
Fähigkeit, Abhängigkeitsgruppierungen (z. B. Entwicklungsabhängigkeiten) klar zu handhaben und plattformübergreifend zu erstellenuv.lock
Gesperrte Datei. Diese Sperrdatei zeichnet die spezifischen Versionen und Quellen aller direkten und indirekten Abhängigkeiten genau auf und stellt sicher, dass eine vollständig konsistente Umgebung auf jedem Rechner und zu jeder Zeit neu erstellt werden kann, um einen wirklich deterministischen Build zu gewährleisten. - Gute Kompatibilität::
uv
Bietet einen Link zumpip
Hochgradig kompatible Befehlsschnittstelle (uv pip ...
) und kann verstehenrequirements.txt
Dateiformat, das die Migration bestehender Projekte auf dasuv
Das Verfahren ist relativ reibungslos. - Aktive Entwicklung und die Zukunft:: Von
Astral
Das Team pflegt aktiv und führt schnelle Iterationen unter Verwendung derMIT
Open-Source-Lizenz. Großes Interesse der Gemeinschaft, großes Entwicklungspotenzial und eine vielversprechende Zukunft.
ausnutzen uv
wird erwartet, dass die Entwickler ähnliche Erfahrungen machen werden. Node.js
( npm
/ yarn
/ pnpm
) oder Rust
( Cargo
) als fließende und einheitliche Arbeitsabläufe für das Abhängigkeitsmanagement.
Einbau von UV
Montage uv
Sehr einfach. Offiziell wird empfohlen, das mitgelieferte Installationsskript zu verwenden, da es nicht von der bestehenden Python
Umwelt. Natürlich, durch pip
oder System Package Manager sind ebenfalls eine gute Option.
- Empfohlene Methode (plattformübergreifendes Scripting)::
# macOS / Linux (bash, zsh, etc.) curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
zur Kenntnis nehmen: Das offizielle Skript setzt standardmäßig die
uv
Installation an einem bestimmten Ort im Benutzerverzeichnis (z. B.Linux
/macOS
(in Form eines Nominalausdrucks)~/.uv/bin
vielleichtWindows
(in Form eines Nominalausdrucks)%LOCALAPPDATA%\uv\bin
), die sich normalerweise auf der Systemdiskette befindet (z. B.C:
(Scheibe). - Pip verwenden (erfordert eine vorhandene Python-Umgebung)::
pip install uv # 或推荐使用 pipx 进行隔离安装 # pipx install uv
Wenn Ihr
Python
Umwelt- oderpipx
Die Umgebung selbst befindet sich nicht auf der Systemdiskette, und durch diese Art der Installation wird dieuv
Normalerweise folgt sie auch ihrer Position. Sie können dies einstellen, indem Sie die OptionPIPX_HOME
Zu kontrollierende Umgebungsvariablenpipx
Der Installationspfad des - Verwendung des Systempaketmanagers (Beispiel)::
# macOS (Homebrew) brew install uv # Windows (Scoop) # 可以先将 Scoop 本身安装到非系统盘,然后用它安装 uv scoop install uv # Arch Linux pacman -S uv
Wenn, wie im Fall von
Scoop
Ein solcher Paketmanager wird selbst auf einem systemfremden Datenträger konfiguriert, dann werden die von ihm installierten Anwendungen (einschließlich deruv
) werden in der Regel ebenfalls auf demselben Laufwerk installiert. - Verwendung von Cargo (erfordert eine Rust-Umgebung)::
cargo install uv --locked --git https://github.com/astral-sh/uv
uv
wird in denCargo
(in Form eines Nominalausdrucks)bin
Katalog. Dies kann durch die Einstellung des ParametersCARGO_HOME
Die Umgebungsvariable legt die gesamte.cargo
Verzeichnis (das die heruntergeladenencrates
und kompilierte Produkte) auf Nicht-System-Datenträger migriert.
Nachdem die Installation abgeschlossen ist, führen Sie uv --version
vielleicht uv help
um zu überprüfen, ob die Installation erfolgreich war.
Konfigurieren des Speicherorts für UV-Daten (Erweitert)
Standardmäßig wird dieuv
Es zwischenspeichert, lädt die Python
Version als auch über die uv tool install
Die installierten globalen Tools werden standardmäßig im Benutzerverzeichnis gespeichert (normalerweise auf dem Systemlaufwerk). Wenn Sie sie auf einem anderen Laufwerk speichern möchten (z. B. auf dem D:
Diskette), um Platz auf der Systemdiskette zu sparen oder um die SSD
Write, die durch Setzen des ParametersUmgebungsvariableum sie zu verwirklichen.
Hier sind ein paar wichtige Umgebungsvariablen:
UV_CACHE_DIR
: Kontrolleuv
Speicherort des Cache-Verzeichnisses. Der Cache enthält heruntergeladene Paketdateien, gebautewheel
usw., die mehr Platz beanspruchen können.UV_PYTHON_INSTALL_DIR
:: Kontrolle durchuv python install
heruntergeladen und verwaltetPython
Der Ort, an dem der Interpreter installiert werden soll.UV_TOOL_INSTALL_DIR
:: Kontrolle durchuv tool install
Installiert globalPython
Lagerorte für Werkzeuge und ihre isolierten Umgebungen.
Wie man Umgebungsvariablen setzt (Beispiel):
Angenommen, das Ziel ist es, alle uv
Die Daten werden in der D:\uvdata
Katalog.
- Windows (PowerShell - temporäre Einstellung, nur für die aktuelle Sitzung gültig):
$env:UV_CACHE_DIR = "D:\uvdata\cache" $env:UV_PYTHON_INSTALL_DIR = "D:\uvdata\python" $env:UV_TOOL_INSTALL_DIR = "D:\uvdata\tools" # 之后在此会话中运行 uv 命令,数据将写入新位置 uv pip install requests
- Windows (Systemumgebungsvariablen - permanente Einstellungen):
- existieren
Windows
Suchen Sie in der Suchleiste nach "Umgebungsvariablen". - Klicken Sie auf "Systemumgebungsvariablen bearbeiten".
- Klicken Sie im Dialogfeld "Systemeigenschaften" auf die Schaltfläche "Umgebungsvariablen...". Schaltfläche.
- Klicken Sie im Bereich "Benutzervariablen" oder "Systemvariablen" (Benutzervariablen werden empfohlen, sofern sie nicht für alle Benutzer benötigt werden) auf "Neu ..." .".
- Geben Sie den Variablennamen ein (z. B.
UV_CACHE_DIR
) und variable Werte (wieD:\uvdata\cache
). - Wiederholen Sie diesen Vorgang für die beiden anderen Variablen.
- Klicken Sie auf OK, um alle Dialoge zu schließen.
- Krux:: ErforderlichWiedereröffnung
PowerShell
oder Eingabeaufforderungsfenster, damit die neue Umgebungsvariable wirksam wird.
- existieren
- Linux / macOS (bash/zsh - temporäre Einstellungen):
export UV_CACHE_DIR="/path/to/non_system_drive/uvdata/cache" export UV_PYTHON_INSTALL_DIR="/path/to/non_system_drive/uvdata/python" export UV_TOOL_INSTALL_DIR="/path/to/non_system_drive/uvdata/tools" # 之后在此会话中运行 uv 命令 uv pip install requests
- Linux / macOS (permanente Einrichtung):
topologischexport
in Ihre Shell-Konfigurationsdatei einfügen (z. B.~/.bashrc
,~/.zshrc
,~/.profile
), und führen Sie dann diesource ~/.your_config_file
oder starten Sie das Terminal neu, damit die Konfiguration wirksam wird.
Wichtige Hinweise:
- Nachdem diese Umgebungsvariablen gesetzt wurden, wird die
uv
Die angegebenen Pfade werden automatisch verwendet. Stellen Sie sicher, dass diese Verzeichnisse existieren und dassuv
Sie haben Schreibzugriff. - Virtuelle Umgebung (
.venv
) Stellung:uv venv
Die Standardeinstellungen in IhremProjekt-Stammverzeichniserstellen..venv
Ordner. Infolgedessen wird derSolange sich Ihr Projekt selbst auf einem systemfremden Datenträger befindet (z. B. auf derD:\myproject
), dann.venv
Natürlich wird sie auch auf dieser Disc enthalten sein. In der Regel ist es nicht erforderlich, eine Liste von.venv
Konfigurieren Sie die Pfade individuell, um die Systemdiskette zu vermeiden. Natürlich können Sie die Systemdiskette auch vermeiden, indem Sieuv venv /path/to/custom/env
Geben Sie explizit an, wo die virtuelle Umgebung erstellt werden soll, aber dies dient eher der Anpassung des Umgebungspfads als der Lösung des Speicherproblems des Systems.
Wenn Sie diese Umgebungsvariablen richtig konfigurieren, können Sie die uv
erzeugt und an einen Speicherort geleitet, an dem mehr Platz zur Verfügung steht oder der besser geeignet ist.
UV-Kernkonzepte
bei der Nutzung uv
Bei der Verwaltung eines Projekts ist es wichtig, die folgenden Kernkonzepte zu verstehen:
pyproject.toml
: ModernPython
Standardprofil des Projekts (basierend auf PEP 517/518/621).uv
Verwenden Sie es, um Projekt-Metadaten (Name, Version, Beschreibung usw.) zu definieren.Python
Fassung (requires-python
) und die Hauptabhängigkeiten des Projekts (dependencies
) und optionale Abhängigkeitsgruppen (z. B.dev-dependencies
). Sie ist die "einzige Quelle der Wahrheit" für die Projektkonfiguration.uv.lock
:: Vonuv
Eine gesperrte Datei, die automatisch erstellt und verwaltet wird. Sie zeichnet die spezifischen Versionsnummern und Quellcode-Hashes aller Abhängigkeiten des Projekts (einschließlich indirekter Abhängigkeiten) genau auf. Ihr Hauptwert besteht darin, sicherzustellen, dassReproduzierbarkeit der Umwelt: wann immer und wo immer sie auf demselben beruhenuv.lock
Datei die Abhängigkeiten installiert, erhalten Sie genau die gleiche Paketkombination.Diese Datei sollte nicht manuell bearbeitet werden.- Virtuelle Umgebung (
.venv
)::uv
Sehr empfehlenswert und vereinfacht die Verwendung von virtuellen Umgebungen. Es erstellt standardmäßig eine virtuelle Umgebung im Stammverzeichnis des Projekts mit dem Namen.venv
von isolierten Umgebungen zur Unterbringung von Projektabhängigkeiten. Die meisten deruv
Befehl (z.B.add
,sync
,run
) werden automatisch erkannt, und die Operationen werden in dieser Umgebung durchgeführt, so dass die globalePython
Verschmutzung der Umwelt.
Verwaltung von Python-Projekten mit UV
Im Folgenden wird anhand eines vollständigen Prozesses gezeigt, wie man uv
zur Erstellung und Verwaltung einer Python
Projekt.
Initialisieren Sie das Projekt (uv init
)
ausnutzen uv init
können Sie schnell die Grundstruktur eines neuen Projekts erstellen.
# 确保在期望的驱动器上操作,例如在 D: 盘
# D:
# mkdir my_uv_project
# cd my_uv_project
# 初始化名为 my_uv_project 的项目
uv init my_uv_project
cd my_uv_project
Nach der Umsetzung.uv
wird in my_uv_project
Verzeichnis erzeugt wird:
.git/
im Gesang antworten.gitignore
Automatische InitialisierungGit
Repository und bietet eine gemeinsamePython
Sportereignis.gitignore
Dokumentation..python-version
Dokumentation von Projektvorschlägen oder Anträgen aufPython
Version (z.B.3.12
).uv
sich auf dieses Dokument beziehen, um die entsprechende Software auszuwählen oder zu installierenPython
Dolmetscher.pyproject.toml
Die zentrale Konfigurationsdatei für das Projekt, die den Projektnamen, die Version und die Beschreibung enthält,Python
Version Anforderungen und leerdependencies
Liste.README.md
: eine leereREADME
Dokumentation.src/my_uv_project/__init__.py
: Eine grundlegende Quellcode-Struktur (bei Verwendung dessrc
(Layout). Oder eine einfachehello.py
Beispiel-Datei.
# pyproject.toml 示例内容 (可能略有不同)
[project]
name = "my-uv-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12" # 根据系统情况或指定版本生成
dependencies = []
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# uv 可能还会添加 tool.uv 相关配置
Erstellen und synchronisieren Sie die Umgebung (uv venv
, uv sync
)
Nachdem das Projekt initialisiert wurde, müssen Sie die virtuelle Umgebung erstellen und den Abhängigkeitsstatus synchronisieren (selbst wenn es sich um eine leere Abhängigkeit handelt, wird bei der ersten Synchronisierung die uv.lock
).
- Erstellen Sie eine virtuelle Umgebung (
uv venv
)::
auch wennuv sync
und andere Befehle erzeugen automatisch.venv
Sie können aber auch explizit erstellt werden:# 创建默认的 .venv 环境 (uv 会根据 .python-version 或系统查找合适的 Python) # 这个 .venv 会在当前项目目录下创建 uv venv # 创建时指定 Python 版本 uv venv --python 3.11 # 指定自定义环境名称 (不常用,因为 uv 生态默认与 .venv 配合) uv venv my_custom_env
Wenn eine manuelle Betriebsumgebung erforderlich ist (z. B. bei der Verwendung eines nicht
uv
verwaltetes Werkzeug), dann müssen Sie es aktivieren:# Linux/macOS source .venv/bin/activate # Windows (PowerShell) .venv\Scripts\Activate.ps1 # Windows (CMD) .venv\Scripts\activate.bat
Arbeit: Für die große Mehrheit der
uv
Befehl (add
,remove
,sync
,run
usw.).Eine manuelle Aktivierung der Umgebung ist in der Regel nicht erforderlich.(math.) Gattunguv
findet und verwendet automatisch die.venv
. - Synchronisierte Umgebung (
uv sync
)::
Dies ist einer der wichtigsten Befehle, um sicherzustellen, dass der Zustand der virtuellen Umgebung mit dem Zustand derpyproject.toml
(überuv.lock
Dokumente) oderrequirements.txt
Die Datei ist genau konsistent. Das erste Mal, wenn sie ausgeführt wird, wird sie:- abrufen.
pyproject.toml
der Abhängigkeitsdefinition. - Führt die Auflösung von Abhängigkeiten durch.
- Erzeugung von
uv.lock
Dokumentation. - existieren
.venv
(zunächst kann nur das Projekt selbst als bearbeitbares Paket verfügbar sein).
# 在项目根目录运行 uv sync
Nach der Ausführung werden Sie sehen
.venv
Das Verzeichnis wird erstellt oder aktualisiert und einuv.lock
Dokumentation. - abrufen.
Verwaltung von Abhängigkeiten (uv add
, uv remove
, uv lock
)
dies ist uv
Die am häufigsten verwendeten Funktionen, die für die Verwendung empfohlen werden, basieren auf pyproject.toml
des Arbeitsablaufs.
- Eine Abhängigkeit hinzufügen (
uv add
):
Fügen Sie das Paket zumpyproject.toml
(in Form eines Nominalausdrucks)[project.dependencies]
Abschnitt und installiert oder aktualisiert automatisch die.venv
Umwelt. Zur gleichen Zeituv.lock
Sie wird auch aktualisiert werden.# 添加最新稳定版的 pandas uv add pandas # 添加 requests,并指定版本约束 uv add "requests>=2.20,<3.0" # 添加开发依赖 (如测试框架 pytest),会写入 [tool.uv.dev-dependencies] uv add pytest --dev uv add ruff --dev # 从 Git 仓库添加依赖 uv add git+https://github.com/psf/requests.git # 添加本地路径的包 (以可编辑模式安装) uv add -e ../my_local_library
- Abhängigkeiten entfernen (
uv remove
):
durch (eine Lücke)pyproject.toml
entfernt das angegebene Paket aus dem.venv
Umgebung, um es und nicht mehr benötigte nachgelagerte Abhängigkeiten zu deinstallieren.# 移除 pandas uv remove pandas # 移除开发依赖 pytest uv remove pytest --dev
- Aktualisieren von Abhängigkeiten:
- Aktualisieren Sie alle Abhängigkeiten zu
pyproject.toml
Die neueste Version, die durch die Einschränkungen in und regenerieren Sie dieuv.lock
::# 1. 更新 lock 文件 uv lock --upgrade # 2. 应用 lock 文件更新到环境 uv sync
- Aktualisieren Sie nur bestimmte Pakete auf die neueste Version:
# 方法一:指定包更新 lock 文件,然后同步 uv lock --upgrade-package requests uv sync # 方法二:直接 'add' 最新版 (也会更新 lock 和环境) uv add requests@latest
- Aktualisieren Sie alle Abhängigkeiten zu
- manuelles Bearbeiten
pyproject.toml
Kaiserin:
Wenn Sie direkt diepyproject.toml
Abhängigkeitsliste in der Datei zu ändern, müssen Sie die folgenden beiden Schritte ausführen, damit die Änderungen wirksam werden:uv lock
:: Basierend aufpyproject.toml
Der neue Inhalt berechnet die Abhängigkeiten neu und aktualisiert dieuv.lock
Dokumentation.uv sync
:: Willeuv.lock
Der Zustand in der Datei wird mit der.venv
Virtuelle Umgebungen.
Führen Sie den Code und die Befehle aus (uv run
)
uv run
sein uv
Eine äußerst praktische Funktion. Sie ermöglicht es Ihnen, eine Datei in der uv
Ausführung im Kontext einer verwalteten virtuellen Umgebung Python
Skript oder einen beliebigen Befehl.Kein manuelles Aktivieren der Umgebung im Vorfeld erforderlich. Dies ist uv
Dies ist eines der wichtigsten Merkmale eines optimierten Arbeitsablaufs, dessen Beherrschung sich lohnt.
Arbeitsprinzip:
Wenn Sie die uv run <command> [args...]
Zeit:
- Automatische Erkennung der Umgebung::
uv
findet automatisch das aktuelle Verzeichnis und das übergeordnete Verzeichnis der Datei.venv
Virtuelle Umgebungen. - Ausführung der internen Konfigurationsumgebung:
- in Bezug auf
uv run python your_script.py
einen solchen Auftrag.uv
ruft direkt die.venv
Verzeichnis desPython
Dolmetscher (.venv/bin/python
vielleicht.venv/Scripts/python.exe
), um das Skript auszuführen. - in Bezug auf
uv run pytest tests/
vielleichtuv run ruff format .
einen solchen Auftrag.uv
Sie müssenInnerhalb des untergeordneten Prozesses, der den Befehl ausführtDie Zwischenzeit wird sein.venv/bin
(oder.venv/Scripts
) wird dem System hinzugefügtPATH
an den Anfang der Umgebungsvariablen. Auf diese Weise ist das Betriebssystem in der Lage, die in der virtuellen Umgebung installierten Befehlszeilentools zu finden und auszuführen, auch wenn Sie die Umgebung nicht aktivieren (z. B. daspytest
,ruff
).
- in Bezug auf
Wie kann ich eine Python-Datei ausführen?
Um das Projekt auszuführen Python
Datei (z.B. src/my_package/main.py
oder das Stammverzeichnis des app.py
), die empfohlen wird:
uv run python src/my_package/main.py
# 或者
uv run python app.py
Schneidkante:
- Keine manuelle Aktivierung erforderlich: Erspart die Eingabe von
source .venv/bin/activate
vielleicht.venv\Scripts\Activate.ps1
Der Ärger über die - Garantie der ökologischen KonsistenzSicherstellen, dass Ihr Code und Ihre Tools immer in der richtigen virtuellen Umgebung für Ihre Projektkonfiguration ausgeführt werden.
- Vereinfachung von CI/CD-SkriptenIn automatisierten Prozessen wie z.B.
GitHub Actions
,GitLab CI
) können direkt in deruv run
Führen Sie Aufgaben wie Testen, Erstellen und Bereitstellen durch, ohne sich mit komplexer Umgebungsaktivierungslogik befassen zu müssen.
mehr uv run
typisches Beispiel:
# 运行安装在环境中的 pytest 测试
uv run pytest tests/
# 运行安装在环境中的 ruff 代码格式化
uv run ruff format .
# 运行任意系统命令,uv 会确保 .venv/bin 在 PATH 中
uv run alembic upgrade head
# 向脚本传递参数
uv run python your_script.py --input data.csv --output results.json
Wann muss ich noch manuell aktivieren?
Manuelle Aktivierung (source activate
oder ähnliche Befehle) wurde stark reduziert. Wahrscheinlich hauptsächlich in der gleichen Shell-Sitzung, die Sie benötigen:
- Häufiges interaktives Ausführen mehrerer Befehle, die von der virtuellen Umgebung abhängen (z. B. direktes Eingeben der
python
Gehen Sie zum Interpreter und dann zumpytest
Und wieder.ruff
). - Verwenden Sie einige spezifische Umgebungsvariablen, die von den Einstellungen des Aktivierungsskripts abhängen (außer der
PATH
(außer) den nichtPython
Werkzeuge.
Aber für die meisten alltäglichen Entwicklungsaufgaben ist dieuv run
Das automatisierte Umweltmanagement ist bequemer und effizienter.
ausnutzen requirements.txt
(Workflow-kompatibel)
auch wenn uv
Empfohlen pyproject.toml
unterstützt aber auch vollständig die traditionelle requirements.txt
Arbeitsabläufe, und bietet pip
Kompatible Befehlsschnittstelle und schneller.
- Abhängigkeiten installieren (
uv pip install
):# 安装单个包 uv pip install flask # 从 requirements 文件安装 uv pip install -r requirements.txt # 可以同时指定多个文件 uv pip install -r requirements.txt -r requirements-dev.txt # 安装当前项目 (以可编辑模式) uv pip install -e .
- Deinstallation von Abhängigkeiten (
uv pip uninstall
):uv pip uninstall flask # 从文件批量卸载 uv pip uninstall -r requirements-to-remove.txt
- Erzeugen Sie eine Liste von Abhängigkeiten (
uv pip freeze
):# 输出当前环境安装的所有包 (类似 pip freeze) uv pip freeze > requirements.lock.txt # 常用于生成锁定文件
- Abhängigkeiten kompilieren (
uv pip compile
) (Empfohlenrequirements
Arbeitsablauf):
Dieser Ansatz ist vergleichbar mitpip-tools
. Sie erhalten einerequirements.in
Datei (die nur direkte Abhängigkeiten enthält), und verwenden Sie dann dieuv
Erzeugen Sie die genaue Version derrequirements.txt
Sperren Sie die Datei.# requirements.in 内容示例: # flask # requests>=2.25 # 生成 requirements.txt uv pip compile requirements.in -o requirements.txt # 为开发环境编译 (假设有 requirements-dev.in) # uv pip compile requirements-dev.in -o requirements-dev.txt
- Synchronisierte Umgebung (
uv pip sync
):
Basierend auf einem oder mehrerenrequirements.txt
Der Inhalt der Datei wird genau mit der virtuellen Umgebung synchronisiert: fehlende Pakete werden installiert und überflüssige Pakete werden entfernt.# 同步主依赖和开发依赖 uv pip sync requirements.txt requirements-dev.txt
- Installierte Pakete anzeigen (
uv pip list
,uv pip show
,uv pip tree
):uv pip list # 列出已安装的包和版本 uv pip show flask # 显示 flask 包的详细信息 uv pip tree # 以树状结构显示依赖关系
Verwalten von Python-Versionen (uv python
)
uv
Integrierter Download, Verwaltung und Auswahl Python
Version des Merkmals, ähnlich wie bei der pyenv
. (Denken Sie daran, dass dies auch über die UV_PYTHON_INSTALL_DIR
Umgebungsvariablen konfigurieren diese Python
(Einbaulage)
- Verfügbare und installierte Versionen auflisten (
uv python list
):# 列出已安装和当前使用的版本 uv python list # 显示所有可供下载的补丁版本 # uv python list --all-versions # 只显示已安装的版本 uv python list --only-installed
- Installieren Sie die Python-Version (
uv python install
):# 安装最新的稳定版 (如果尚未安装) uv python install # 安装特定版本 uv python install 3.11.5 # 安装 3.10 系列的最新可用版 uv python install 3.10
uv
sendet die heruntergeladenenPython
Installieren Sie es in seinem verwalteten Verzeichnis (uv python dir
Der Pfad kann unter folgenden Bedingungen eingesehen werdenUV_PYTHON_INSTALL_DIR
Auswirkungen). - Deinstallieren Sie die Python-Version (
uv python uninstall
):uv python uninstall 3.10.8 # 卸载 3.11 系列所有已安装版本 uv python uninstall 3.11
- Festgelegte Projekt-Python-Version (
uv python pin
):
Erstellen oder Aktualisieren im aktuellen Verzeichnis.python-version
Datei, in der erklärt wird, dass das Projekt diePython
Version.uv python pin 3.11
jenseits von
uv venv
,uv run
,uv sync
und andere Befehle werden bevorzugt diese Version finden und verwenden. - Suchen Sie den Python-Interpreter (
uv python find
):# 查找匹配 3.12 的 Python 解释器路径 uv python find 3.12
Verwalten Sie globale Werkzeuge (uv tool
)
uv
Es könnte so sein pipx
Installieren Sie wie immer das globale Python CLI
Tools und isolieren Sie jedes Tool in einer separaten Umgebung, um Abhängigkeitskonflikte zu vermeiden. (In ähnlicher Weise kann der Speicherort der Werkzeuge mit der Option UV_TOOL_INSTALL_DIR
Konfiguration der Umgebungsvariablen)
- Laufende Werkzeuge (Ad-hoc-Implementierung usw.)
uv tool run
vielleichtuvx
):
Lädt das Tool vorübergehend herunter (falls erforderlich) und führt es aus, ohne es nach der Ausführung zu behalten. Dies ist sehr praktisch für Werkzeuge, die nur einmal verwendet werden.uvx
seinuv tool run
Die abgekürzte Form.# 运行 ruff 检查当前目录,临时下载 ruff uv tool run ruff check . # 使用简写 uvx uvx ruff check . # 如果命令名 (http) 和包名 (httpie) 不同,使用 --from uvx --from httpie http https://example.com
- Installation von globalen Werkzeugen (
uv tool install
):
Installieren Sie das Tool und seine Abhängigkeiten in das Verzeichnisuv
verwaltete Standalone-Umgebung und verknüpfen Sie die ausführbare Datei mit dem Benutzerpfad (dies kann einen Neustart des Terminals oder die manuelle Konfiguration desPATH
(um sie direkt aufrufen zu können). Dies ist ähnlich wie derpipx install
.uv tool install black uv tool install httpie
Nach der Installation kann es theoretisch von überall aus ausgeführt werden
black .
vielleichthttp https://example.com
. - Installierte Werkzeuge auflisten (
uv tool list
):uv tool list
- Upgrade-Werkzeug (
uv tool upgrade
):uv tool upgrade black # 升级所有已安装工具 # uv tool upgrade --all
- Deinstallationswerkzeuge (
uv tool uninstall
):uv tool uninstall black
- Zeigen Sie das Installationsverzeichnis des Tools an (
uv tool dir
):
zeigenuv
Der Wurzelpfad, in dem globale Werkzeuge und ihre Umgebungen gespeichert werden (abhängig von derUV_TOOL_INSTALL_DIR
Auswirkungen).
Verwaltung des Cache (uv cache
)
uv
Verwenden Sie den globalen Cache, um das Herunterladen und Erstellen von Paketen zu beschleunigen. (Auf den Cache-Speicherort kann über die Option UV_CACHE_DIR
Konfiguration der Umgebungsvariablen)
- Löschen des Caches (
uv cache clean
):
Alle löschenuv
Zwischengespeicherte Inhalte. Dies kann verwendet werden, um mögliche Probleme mit dem Cache zu lösen oder Speicherplatz freizugeben.uv cache clean
- Anzeigen des Cache-Verzeichnisses (
uv cache dir
):
Aktuelle Ansichtuv
Der Ort, an dem die Cache-Datei gespeichert wird (vorbehaltlich derUV_CACHE_DIR
Auswirkungen).
Projektverwaltung mit einem Skript
Für einige einfache Widgets oder Skripte kann dieuv
Unterstützt einen sehr schlanken Verwaltungsansatz: Einbettung von Projekt-Metadaten und Abhängigkeiten direkt in die Python
in einem speziellen Kommentarblock in der Kopfzeile des Skripts.
- Initialisierungsskript (
uv init --script
):# 创建一个名为 my_script.py 的脚本,并指定 Python 版本要求 uv init --script my_script.py --python ">=3.10"
Dies wird in der
my_script.py
Am Anfang der Datei wird ein Kommentarblock ähnlich dem folgenden erzeugt:#!/usr/bin/env python # /// script # requires-python = ">=3.10" # dependencies = [ # ] # /// import sys def main() -> None: print(f"Hello from {sys.argv[0]}!") if __name__ == "__main__": main()
- Hinzufügen/Entfernen von Skript-Abhängigkeiten (
uv add/remove --script
):
Kann direkt verwendet werdenadd
vielleichtremove
Auftrag, in Verbindung mit dem--script
um die Abhängigkeitsliste im Skriptkopf zu ändern.# 为 my_script.py 添加 requests 依赖 uv add --script my_script.py requests # 从 my_script.py 移除 requests 依赖 uv remove --script my_script.py requests
Diese Befehle ändern direkt den Header der Skriptdatei
dependencies
Liste. - Führen Sie das Skript (
uv run
):
Direkte Verwendunguv run
Das Skript kann ausgeführt werden.uv run my_script.py
uv
liest automatisch die Metadaten in der Kopfzeile des Skripts, erstellt bei Bedarf eine temporäre virtuelle Umgebung, installiert die darin angegebenen Abhängigkeiten und führt dann das Skript aus. Dieser Ansatz ist ideal für die Verteilung eines einzelnen, in sich geschlossenenPython
Werkzeug-Skript.
Zukunftsaussichten und Empfehlungen
uv
Es handelt sich zweifelsohne um ein ehrgeiziges und äußerst schnell wachsendes Projekt. Es stützt sich auf Rust
Die Leistungsvorteile und die gut gestaltete, einheitliche Schnittstelle versprechen eine deutliche Verbesserung der Python
Erfahrung in der Verwaltung von Entwicklerpaketen und -umgebungen. Seine Grundwerte sindTempoim Gesang antwortenkonform.
(tun Sie es einfach) ohne zu zögern uv
Das relativ junge Ökosystem (z. B. tiefe IDE-Integrationen, Tutorial-Ressourcen von Drittanbietern) wächst noch schnell und Befehle oder Verhaltensweisen können aufgrund der aktiven Iteration von Version zu Version leicht verändert werden (es wird empfohlen, das Changelog im Auge zu behalten).
Aber vorläufig.uv
Die Kernfunktionen sind recht stabil und robust.
Anregung:
- in Bezug aufeingehend
Python
SportereignisEs wird dringend empfohlen, dass die direkte Übernahme vonuv
. Es bietet von Anfang an eine erfrischende und effiziente Verwaltungserfahrung. - Für dieseDie bestehenden Toolchains (z. B.
pip
+virtualenv
+pip-tools
(Kombinierte) Komplexität oder Leistungsprobleme plagenvon Entwicklern und Teams.uv
ist eine sehr attraktive Alternative und es lohnt sich, Zeit in die Evaluierung und Migration zu investieren. - Für diejenigen, die sich intensiv mit
Poetry
vielleichtPDM
und sich auf ihre spezifischen fortgeschrittenen Funktionen verlassen (z. B. komplexe Plug-in-Systeme, feinkörniges Management des Freigabeprozesses), kann die Migration eine sorgfältigere Bewertung erfordern, bei der dieuv
Die Geschwindigkeit und Einfachheit, die damit einhergehen, stehen dem möglichen Verlust bestimmter Funktionen gegenüber.
uv
wird schnell zum Python
Eine Kraft, mit der man in den Entwicklungs-Workflows rechnen muss und deren Auftauchen ebenso wichtig sein könnte wie die ruff
Zum Beispiel, in der Python
Die Gemeinschaft hat eine neue Runde der Werkzeuginnovation eingeleitet. Ihre Zukunft verdient unsere weitere Aufmerksamkeit.