結論
uv 是一個用 Rust 寫的 Python 套件與專案管理器,安裝與解析依賴比 pip 快 10-100 倍,並且一個工具就能取代 pip、pip-tools、pipx、poetry、pyenv 與 virtualenv。 安裝只要一行指令(curl -LsSf https://astral.sh/uv/install.sh | sh),之後無論是開新專案、跑 Python 腳本還是管理多個 Python 版本,都用同一個指令搞定。
為什麼 2026 年大家都在推 uv?
如果你寫 Python,一定遇過這些鳥事:
pip install慢到可以先去泡杯咖啡- 要管理多個 Python 版本,得另外裝 pyenv
- 想跑個 CLI 工具(比如 ruff、youtube-dl),還要 pipx 或開虛擬環境
- 專案要用 poetry,但 poetry 解析依賴也是慢吞吞
pip freeze之後發現環境亂成一鍋粥,根本不知道裝了什麼
uv 的答案很粗暴:這些工具我全包了,而且我比它們都快。 它是 Astral(Ruff 的開發團隊)用 Rust 寫的,GitHub 星數超過 8.9 萬(2026 年 8 月),從 2023 年 10 月誕生到現在,已經被大量專案在生產環境採用。
flowchart TD
subgraph 傳統 Python 工具鏈
A[pip / pip-tools<br/>安裝與鎖定依賴]
B[virtualenv<br/>虛擬環境]
C[pyenv<br/>Python 版本管理]
D[poetry / pipenv<br/>專案管理]
E[pipx<br/>CLI 工具執行]
end
A --> F[各自為政、速度慢<br/>學習成本高]
B --> F
C --> F
D --> F
E --> F
F --> G[uv 一個工具全部取代<br/>⚡ 快 10-100 倍]安裝 uv(支援 macOS / Linux / Windows)
# macOS 和 Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 或者用 pip(如果已經有 Python)
pip install uv
安裝後會產生 uv 和 uvx 兩個指令,uv self update 可以隨時更新自己。完全不需要先裝 Rust 或 Python——uv 自己就會下載管理 Python。
實戰一:專案管理(取代 poetry + pip + virtualenv)
uv 的專案管理模式,就是「開專案 → 加依賴 → 跑指令」一條龍:
# 開新專案
uv init example
cd example
# 加依賴(自動建立 .venv 虛擬環境)
uv add ruff
# Resolved 2 packages in 170ms
# Installed 2 packages in 1ms
# 跑專案內的指令(自動使用 .venv)
uv run ruff check
# 鎖定依賴版本(產生 uv.lock,跨平台一致)
uv lock
# 同步環境到 lockfile 狀態
uv sync
看到那個 Resolved 2 packages in 170ms 了嗎?同樣的事情,pip 常常要花好幾秒甚至幾十秒。uv 的 lockfile 是「universal lockfile」——在 macOS 上鎖的版本,Windows 和 Linux 也保證一致,團隊協作不再出現「我這裡跑得動你那邊不行」。
常用專案指令速查
| 指令 | 作用 |
|---|---|
uv init <名稱> | 建立新專案 |
uv add <套件> | 加依賴並安裝(自動建 .venv) |
uv remove <套件> | 移除依賴 |
uv run <指令> | 在專案環境中執行指令 |
uv lock | 產生 / 更新 uv.lock |
uv sync | 讓環境完全符合 lockfile |
uv tree | 顯示依賴樹 |
實戰二:單檔 Script 直接跑(取代手動建環境)
這是我覺得 uv 最「神」的功能:在 Python 檔案裡直接宣告依賴,uv 自動建隔離環境幫你跑。
# example.py
# /// script
# requires-python = ">=3.11"
# dependencies = ["requests"]
# ///
import requests
print(requests.get("https://astral.sh").status_code)
# 用 uv 加依賴到 script 的 metadata
uv add --script example.py requests
# 直接跑——uv 自動建環境、裝依賴、執行
uv run example.py
# Reading inline script metadata from: example.py
# Installed 5 packages in 12ms
# 200
以後分享單檔工具腳本,把 # /// script 區塊寫進檔案頭,任何人拿到都能一鍵執行,不用再寫落落長的 README 安裝教學。
實戰三:執行 CLI 工具(取代 pipx)
uvx 是 uv tool run 的縮寫,等同「免安裝版 pipx」:
# 臨時跑一次(用完即丟,不污染環境)
uvx pycowsay 'hello world!'
# 長期安裝某個 CLI 工具
uv tool install ruff
ruff --version
# ruff 0.5.0
常見用法:uvx youtube-dl <網址>、uvx black .、uvx pre-commit run --all-files。想試哪個工具就試哪個,系統永遠乾乾淨淨。
實戰四:Python 版本管理(取代 pyenv)
uv 可以直接下載、安裝、切換 Python 版本:
# 一次安裝多個版本
uv python install 3.12 3.13 3.14
# 在目前目錄釘選版本(產生 .python-version)
uv python pin 3.11
# 用指定版本建立虛擬環境
uv venv --python 3.12.0
# 用特定版本跑指令
uv run --python pypy@3.8 -- python --version
連 PyPy 都支援。從此再也不用 brew install pyenv、pyenv install 編譯半小時了。
實戰五:pip 相容介面(無痛遷移)
uv 提供與 pip 完全相容的介面,改個字首就能享受 10-100 倍加速,既有工作流程完全不用改:
# 舊寫法 → 新寫法
pip install requests → uv pip install requests
pip install -r req.txt → uv pip install -r req.txt
python -m venv .venv → uv venv
# 進階:把 requirements.in 編譯成跨平台 requirements.txt
uv pip compile requirements.in --universal --output-file requirements.txt
# 同步環境到鎖定狀態
uv pip sync requirements.txt
對 CI/CD 特別有感:原本 pip 安裝要 2-3 分鐘的 job,換成 uv 常常 10 秒內完成。
uv vs 傳統工具總比較
| 面向 | uv | pip | poetry | pipenv | pyenv | pipx |
|---|---|---|---|---|---|---|
| 速度(解析/安裝) | ⚡ 10-100x | 1x | 慢 | 慢 | — | 1x |
| 專案管理 + lockfile | ✅ universal | ❌ | ✅ | ✅ | ❌ | ❌ |
| Python 版本管理 | ✅ 內建 | ❌ | 部分 | ❌ | ✅ | ❌ |
| CLI 工具執行 | ✅ uvx | ❌ | ❌ | ❌ | ❌ | ✅ |
| 單檔 Script 執行 | ✅ inline metadata | ❌ | ❌ | ❌ | ❌ | ❌ |
| Workspaces 多專案 | ✅ Cargo 風格 | ❌ | ❌ | ❌ | ❌ | ❌ |
| 語言 | Rust | Python | Python | Python | Shell/Python | Python |
| 需要額外工具搭配 | 不需要 | +venv+pyenv+pipx | +pyenv | +pyenv | +venv | +venv |
進階技巧
1. 全域快取,省磁碟空間
uv 用單一全域快取(~/.cache/uv)做依賴去重——10 個專案共用同一個 requests,磁碟只存一份。實測能省下大量空間,尤其是裝過很多 ML 套件的機器。
2. Workspaces(Cargo 風格多專案)
大型專案可以拆成多個子套件一起管理:
uv init --workspace my-monorepo
cd my-monorepo && uv add --package pkg-a pkg-b
3. CI/CD 加速
GitHub Actions 或 GitLab CI 裡直接:
- uses: astral-sh/setup-uv@v6
- run: uv sync --frozen # 完全照 lockfile,不重新解析
- run: uv run pytest
--frozen 模式保證 CI 用的就是 lockfile 版本,快又穩。
常見問題 FAQ
Q:uv 怎麼唸? A:唸「you-vee」(/juː viː/),不是「優夫」。
Q:uv 夠穩定嗎?可以上生產嗎? A:可以。官方有明確的版本政策,uv 已被大量開源專案與企業生產環境採用,README 明說 “uv is stable and widely used in production”。
Q:公司還在用 pip,我能混用嗎? A:可以。uv pip 介面就是設計來無痛取代 pip 的,requirements.txt 照用,只是安裝變快。
Q:uv 要錢嗎? A:完全開源,Apache-2.0 / MIT 雙重授權。
Q:它跟 ruff 是什麼關係? A:同一家公司(Astral)出品。Ruff 是極速 Python linter,uv 是極速套件管理器,都是 Rust 生態「重寫 Python 工具鏈」的代表作。
白話總結
如果你還在忍受 pip 的龜速和 poetry 的解析地獄,2026 年真的沒有理由不試 uv:一行指令安裝、五個工具合一、速度 10-100 倍起跳。從「開新專案」到「跑單檔腳本」到「管理 Python 版本」,全部一個指令搞定。對照組可以看本站的 Mojo 1.0 教學——同樣是新一代 Python 生態工具,方向不同但精神一致;資料分析場景則推薦搭配 DuckDB 完整教學,兩個工具合體後,輕量資料處理可以完全離開 Jupyter 的慢速地獄。
延伸閱讀
- Mojo 1.0 正式發布:Python 超集 AI 語言完整教學(2026)
- DuckDB 完整教學 2026:從安裝到查詢 Parquet 實戰
- MCP 完整教學 2026:什麼是 Model Context Protocol?Python 實作第一個 MCP Server
- llama.cpp:在 CPU 和 GPU 上進行高效能 LLM 推理
資料來源
- astral-sh/uv GitHub 官方 README(8.9 萬星,2026-08-23 查詢)
- uv 官方文件 docs.astral.sh/uv
