Python uv 極速套件管理工具

uv 是由 Astral(Ruff 的開發團隊)推出的 Python 套件安裝與專案管理工具。它的最大特色就是極致的速度。它是用 Rust 編寫的,旨在取代 pip, pip-tools 甚至 poetry

為什麼選擇 uv?

  1. 速度快:通常比 pip 快 10-100 倍。
  2. 相容性:設計為 pip 的直接替代品 (drop-in replacement)。
  3. 整合性:單一工具整合了解析 (compile)、同步 (sync)、安裝 (install) 和虛擬環境管理。
  4. Rust 核心:利用 Rust 的效能優勢進行平行下載和解析。

安裝

Mac / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

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

或者使用 pip 安裝(但建議使用獨立安裝):

pip install uv

使用 uv 作為 pip 替代品

uv pip 命令可以直接替代標準的 pip 命令。

安裝套件

# 建立虛擬環境
uv venv

# 啟動虛擬環境 (Mac/Linux)
source .venv/bin/activate

# 安裝套件
uv pip install requests

從 requirements.txt 安裝

uv pip install -r requirements.txt

產生鎖定檔案 (Locking)

uv 可以像 pip-compile 一樣將依賴編成鎖定的版本:

# 將 requirements.in 編譯成 requirements.txt
uv pip compile requirements.in -o requirements.txt

同步環境 (Sync)

將環境同步到與鎖定檔案完全一致的狀態(會移除多餘的套件):

uv pip sync requirements.txt

使用 uv 管理專案 (Project Management)

從 2024 年 8 月的版本開始,uv 支援類似 Poetry 的專案管理功能。

初始化專案

uv init my-project
cd my-project

這會建立一個包含 pyproject.toml 的專案結構。

新增依賴

uv add requests
uv add pytest --dev

這會自動:

  1. 更新 pyproject.toml
  2. 更新 uv.lock
  3. 安裝套件到虛擬環境

執行程式

uv run main.py

uv run 非常強大,它甚至可以執行不在專案中的腳本,並自動處理依賴:

# 執行一個需要 requests 的腳本,uv 會自動建立暫時環境並安裝 requests
uv run --with requests script.py

管理 Python 版本

uv 甚至可以幫你安裝和管理 Python 版本:

# 安裝 Python 3.12
uv python install 3.12

# 使用特定版本建立虛擬環境
uv venv --python 3.12

效能比較

在冷快取 (cold cache) 的情況下,安裝大型專案依賴(如 Trio 或 Django 專案):

  • pip: ~30 秒
  • uv: ~2 秒

這對於 CI/CD 流程來說,能夠節省大量的時間和成本。

總結

uv 代表了 Python 工具鏈的未來方向:更高效、更整合。如果你正在尋找提升開發效率的方法,或者你的 CI 建置時間太長,強烈建議嘗試 uv