Python uv 極速套件管理工具
uv 是由 Astral(Ruff 的開發團隊)推出的 Python 套件安裝與專案管理工具。它的最大特色就是極致的速度。它是用 Rust 編寫的,旨在取代 pip, pip-tools 甚至 poetry。
為什麼選擇 uv?
- 速度快:通常比 pip 快 10-100 倍。
- 相容性:設計為 pip 的直接替代品 (drop-in replacement)。
- 整合性:單一工具整合了解析 (compile)、同步 (sync)、安裝 (install) 和虛擬環境管理。
- 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
這會自動:
- 更新
pyproject.toml - 更新
uv.lock - 安裝套件到虛擬環境
執行程式
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。