Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

⚡ uv:Python 極速全能管理工具指南

1. 什麼是 uv?

uv 是一個由 Rust 編寫的 Python 套件與專案管理器。它的目標是統一 Python 破碎的工具鏈,成為「Python 界的 Cargo」。

  • 開發商:Astral (也是知名 linter 工具 Ruff 的開發者)。
  • 核心特色極致的速度(比 pip 快 10-100 倍)、一站式管理(取代 pip, poetry, pyenv, virtualenv, pipx)。
  • 定位:不僅僅是 pip 的替代品,更是現代化 Python 專案工作流的標準。

2. 工具比較:為什麼要換?

uv 的最大優勢在於將多個工具的功能整合進一個單一的執行檔中,且效能大幅提升。

功能uvpipPoetrypip-toolspyenvpipx
安裝速度🚀 極快 (Rust)🐢 慢🐢 慢---
依賴解析🚀 極快🐢 慢🐢 慢😐 普通--
虛擬環境管理內建❌ (需 venv)
Python 版本管理內建
執行 CLI 工具✅ (uvx)
專案鎖定檔✅ (uv.lock)✅ (poetry.lock)--

一句話總結:使用 uv,你通常不再需要安裝 Python (它幫你裝)、不再需要手動建立 venv、也不再需要 Poetry 或 pipx。


3. 安裝 uv

macOS / Linux

官方推薦使用安裝腳本:

curl -LsSf [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh

Windows

使用 PowerShell:

powershell -ExecutionPolicy ByPass -c "irm [https://astral.sh/uv/install.ps1](https://astral.sh/uv/install.ps1) | iex"

使用 pip 安裝 (不推薦,但可行)

如果你已經有 Python 環境,也可以用 pip 安裝(但這樣 uv 就變成了依賴於該 Python 的套件):

pip install uv

4. 常用指令速查表 (Cheatsheet)

uv 有兩種使用模式:「專案管理模式 (Project)」「pip 兼容模式 (Pip Interface)」。目前官方推薦使用專案管理模式。

📦 模式一:現代化專案管理 (類似 Poetry/npm)

這是 uv 最強大的用法,自動處理虛擬環境與鎖定檔。

動作指令說明
初始化專案uv init <專案名>建立新資料夾與 pyproject.toml
加入套件uv add flask安裝套件並更新設定檔與 lock 檔
加入開發套件uv add --dev pytest僅加入開發環境依賴
移除套件uv remove flask移除套件
執行腳本uv run main.py最常用! 自動在虛擬環境中執行
同步環境uv sync根據 lock 檔安裝所有依賴 (類似 npm install)
檢視依賴樹uv tree顯示依賴關係樹狀圖

🐍 Python 版本管理 (取代 pyenv)

動作指令說明
安裝 Pythonuv python install 3.12下載並安裝指定版本的 Python
列出版本uv python list列出已安裝或可用的 Python 版本
指定專案版本uv pin 3.11強制目前專案使用 Python 3.11

🛠️ 工具執行 (取代 pipx)

不想安裝套件到專案,只想暫時執行某個工具(如 ruff, black, httpie)?

動作指令說明
執行工具uvx ruff check .下載並執行 ruff (用完即丟,不汙染環境)
安裝工具uv tool install black將工具安裝到全域環境

🐢 模式二:Pip 兼容模式 (Legacy)

如果你不想改變現有的工作流,只想把它當作更快的 pip 使用。

動作指令對應 pip 指令
建立 venvuv venvpython -m venv .venv
安裝套件uv pip install requestspip install requests
安裝列表uv pip install -r requirements.txtpip install -r ...
匯出列表uv pip freeze > requirements.txtpip freeze > ...

5. 常見問答 (FAQ)

Q1: uv run 是做什麼的?

這是 uv 最方便的指令。當你執行 uv run app.py 時,它會:

  1. 檢查是否有虛擬環境,沒有就建立一個。
  2. 檢查依賴是否安裝,沒有就安裝。
  3. 使用該虛擬環境執行 app.py。 你不再需要手動 source .venv/bin/activate

Q2: 全域快取 (Global Cache) 是什麼?

uv 會將下載過的套件存在硬碟的一個中心位置。如果你有 10 個專案都用了 numpyuv 只需要下載一次,且硬碟佔用量極低(透過 Hard link 技術)。

Q3: 如何升級 uv 本身?

uv self update

6. 從 Poetry 遷移到 uv

如果你原本使用 pyproject.toml (Poetry),遷移非常簡單:

  1. 刪除 poetry.lock
  2. 在專案目錄執行:
    uv init
    uv add <你的主要套件>
    
    (或者直接讓 uv 讀取既有的 pyproject.toml 格式並轉換)