Python 開發者終於不用再糾結於 pippoetrypipenv 之間了。由 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 快的核心原因:

  1. Rust 實作 — 相依性解析引擎用 Rust 編寫,比 Python 快幾個數量級
  2. 全域快取 — 套件下載後全域快取,專案間透過硬連結共享
  3. 平行下載 — 同時下載多個套件,充分利用網路頻寬
  4. 智慧快取 — 解析結果也會被快取,避免重複計算

從 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