跳至主要内容

uv

Overview

uv 是由 Astral 團隊(同時也是 ruff linter 的開發者)以 Rust 打造的 Python 套件與專案管理工具。相較於傳統的 pip,uv 的速度快上 10-100 倍,並且提供了一站式的 Python 開發體驗:套件安裝、虛擬環境管理、Python 版本管理、專案管理、腳本執行等功能一應俱全。

uv 的設計理念是成為 Python 生態系的「Cargo」——一個統一、快速、可靠的工具鏈。

Install

# macOS / Linux (推薦)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Homebrew
brew install uv

# pip (不推薦,但可用)
pip install uv

安裝完成後可驗證:

uv --version

Basic Usage

虛擬環境管理

# 建立虛擬環境(預設 .venv 目錄)
uv venv

# 指定 Python 版本建立
uv venv --python 3.13

# 啟用虛擬環境
source .venv/bin/activate

pip 相容模式(Drop-in Replacement)

uv 可直接替代 pip 使用,語法幾乎相同:

# 安裝套件
uv pip install flask requests

# 從 requirements.txt 安裝
uv pip install -r requirements.txt

# 編譯鎖定版本(類似 pip-compile)
uv pip compile requirements.in -o requirements.txt

# 同步環境
uv pip sync requirements.txt

Python 版本管理

# 安裝指定版本的 Python
uv python install 3.13

# 列出可用版本
uv python list

# 固定專案使用的 Python 版本
uv python pin 3.12

腳本執行

# 直接執行腳本(自動建立臨時環境、安裝依賴)
uv run script.py

# 指定額外依賴執行
uv run --with requests script.py

Project Management

uv 提供完整的專案生命週期管理:

# 初始化新專案(產生 pyproject.toml)
uv init my-project
cd my-project

# 新增依賴
uv add flask
uv add pytest --dev

# 移除依賴
uv remove flask

# 同步環境(根據 uv.lock 安裝所有依賴)
uv sync

# 執行專案指令
uv run python main.py
uv run pytest

工具執行(類似 pipx)

# 全域安裝 CLI 工具
uv tool install ruff
uv tool install black

# 一次性執行(不安裝,類似 npx)
uvx ruff check .
uvx black --check .

Comparison

特性uvpippoetrypipxconda
安裝速度⚡ 極快 (Rust)中等中等
依賴解析✅ 確定性 resolver❌ 較弱✅ 完整N/A✅ 完整
虛擬環境✅ 內建❌ 需 venv✅ 內建✅ 隔離✅ 內建
Lock file✅ uv.lock❌ 無✅ poetry.lockN/A❌ 無
Python 版本管理
資料科學有限有限有限N/A✅ 最佳
  • uv vs pip:速度快 100 倍,內建確定性 resolver,支援 lock file
  • uv vs poetry:速度更快、lock 格式更簡潔、額外支援 Python 版本管理
  • uv vs pipxuv tool install 完全取代 pipx,且 uvx 提供一次性執行
  • uv vs conda:uv 專注於純 Python 套件管理,不處理 C/Fortran 二進位依賴;資料科學重度使用者仍建議 conda

See Also