Python 開發者終於不用再糾結於 pip、poetry、pipenv 之間了。由 Ruff 背後的 Astral 團隊打造的 uv,正以驚人的速度改變 Python 套件管理的格局。
uv 是什麼?
uv 是一個用 Rust 編寫的 Python 套件與專案管理工具,設計目標只有一個:極致的速度。
| 特性 | 說明 |
|---|---|
| 套件安裝 | 相容 pip 的相依性解析與安裝 |
| 專案管理 | 替代 poetry/pipenv,管理虛擬環境與相依性 |
| 快取機制 | 全域快取 + 硬連結,秒級重複安裝 |
| 多 Python 版本 | 自動安裝和管理多個 Python 版本 |
| 零設定工作流 | uv init + uv add 即可開始 |
| 授權條款 | MIT(完全開源) |
Astral 團隊(也是 Ruff 的作者)把他們在 Rust 高效能工具鏈上的經驗全部傾注到了 uv 上,結果就是:比 pip 快 10-100 倍。
📦 GitHub: https://github.com/astral-sh/uv ⭐ Stars: 50k+ (2026 年中) 📄 License: MIT
安裝 uv
uv 的安裝方式極其簡單,一行指令搞定:
# 官方推薦方式 — 安裝腳本
curl -LsSf https://astral.sh/uv/install.sh | sh
安裝完成後驗證:
uv --version
# uv 0.7.x
如果你使用 Homebrew(macOS/Linux):
brew install uv
或者用 pipx:
pipx install uv
快速上手:建立第一個專案
初始化專案
# 建立新專案(自動產生 pyproject.toml + 虛擬環境)
uv init my-app
cd my-app
看看產生的檔案結構:
my-app/
├── .python-version # 鎖定 Python 版本
├── pyproject.toml # 專案設定
├── README.md
├── main.py
└── uv.lock # 相依性鎖定檔案
pyproject.toml 內容非常乾淨:
[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
新增相依性
# 新增正式環境相依性(自動解析 + 安裝 + 鎖定)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"
# 新增開發相依性
uv add --dev pytest ruff mypy
一條指令同時完成:相依性解析 → 下載 → 安裝 → 更新 uv.lock,整個過程通常只需幾秒。
執行程式碼
# 在虛擬環境中執行腳本
uv run python main.py
# 執行已安裝的工具
uv run pytest
uv run ruff check .
uv run 會自動啟用專案虛擬環境,不需要手動 source .venv/bin/activate。
進階功能
多 Python 版本管理
uv 內建了 Python 版本管理器,可以自動下載和管理多個 Python 版本:
# 檢視已安裝的 Python 版本
uv python list
# 安裝特定版本的 Python
uv python install 3.13
uv python install 3.11
# 為專案指定 Python 版本
uv python pin 3.13
# 在特定版本下執行
uv run --python 3.11 python main.py
這解決了長期困擾 Python 開發者的痛點 — 不再需要 pyenv。
工作區(Workspace)
如果你的專案有多個套件,uv 的工作區功能非常適合:
# 初始化工作區
uv init --package packages/core
uv init --package packages/cli
pyproject.toml:
[tool.uv.workspace]
members = ["packages/*"]
腳本管理
uv 支援在 pyproject.toml 中定義腳本別名:
[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"
然後直接執行:
uv run dev
uv run test
CI/CD 整合
在 GitHub Actions 中使用 uv:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Set up Python
run: uv python install
- name: Install dependencies
run: uv sync --frozen
- name: Run tests
run: uv run pytest
enable-cache: true 會快取 uv 的套件下載,CI 速度提升非常明顯。
與 pip/poetry 的速度對比
以下是 Astral 官方提供的基準測試資料(安裝 Django 及其所有相依性):
| 工具 | 首次安裝 | 快取安裝 |
|---|---|---|
| pip | ~15s | ~3s |
| poetry | ~20s | ~5s |
| uv | ~1.5s | ~0.3s |
uv 快的核心原因:
- Rust 實作 — 相依性解析引擎用 Rust 編寫,比 Python 快幾個數量級
- 全域快取 — 套件下載後全域快取,專案間透過硬連結共享
- 平行下載 — 同時下載多個套件,充分利用網路頻寬
- 智慧快取 — 解析結果也會被快取,避免重複計算
從 pip/poetry 遷移
從 pip 遷移
# 用現有 requirements.txt 建立專案
uv pip install -r requirements.txt
# 或者建立新專案後匯入
uv init
uv add -r requirements.txt
從 poetry 遷移
# 直接從 pyproject.toml 同步相依性
uv sync
# 如果需要重新鎖定
uv lock
uv 完全相容 pyproject.toml 格式,大多數 poetry 專案可以直接切換。
實用指令速查
# 專案管理
uv init <name> # 建立新專案
uv add <package> # 新增相依性
uv remove <package> # 移除相依性
uv sync # 同步相依性(類似 pip install -e .)
uv lock # 重新鎖定相依性
# 執行
uv run <command> # 在虛擬環境中執行指令
uv tool run <tool> # 執行臨時工具(類似 pipx run)
uv tool install <tool> # 安裝全域工具
# Python 管理
uv python install <ver> # 安裝 Python 版本
uv python list # 列出已安裝版本
uv python pin <ver> # 固定專案 Python 版本
# 快取
uv cache dir # 檢視快取目錄
uv cache clean # 清理快取
總結
uv 正在成為 Python 開發者的新標準工具。它由 Ruff 團隊打造,速度極快,API 設計簡潔,而且完全開源。
推薦場景:
- ✅ 新專案 — 直接用
uv init開始 - ✅ CI/CD — 快取友好,建置速度顯著提升
- ✅ 多 Python 版本專案 — 內建版本管理
- ✅ 從 poetry/pipenv 遷移 — 相容 pyproject.toml
如果你還在用 pip + venv 或者 poetry,強烈建議試試 uv — 一旦體驗過秒級安裝的速度,就回不去了。
🔗 官方文件: https://docs.astral.sh/uv/ 🔗 GitHub: https://github.com/astral-sh/uv