UV:2024 年最快速的 Python 包管理器完全指南


UV 是由 Astral 團隊開發的新一代 Python 包管理器,於 2024 年發布。它不僅是一個包管理器,更是一個完整的 Python 專案管理工具,可以替代 pippip-toolspipxpoetrypyenvtwinevirtualenv 等多個工具。

核心特性

根據 Astral 官方文檔

  • 🚀 單一工具整合多個 Python 開發工具
  • ⚡️ 比 pip 快 10-100 倍
  • 🗂️ 提供完整的專案管理,支援通用鎖定文件
  • ❇️ 支援腳本執行,包含內聯依賴元數據
  • 🐍 安裝和管理 Python 版本
  • 🛠️ 執行和安裝 Python 包提供的命令行工具
  • 🔩 包含與 pip 兼容的介面
  • 🏢 支援 Cargo 風格的工作空間
  • 💾 高效的磁碟空間使用,全局快取用於依賴去重
  • ⏬ 無需 Rust 或 Python 即可安裝
  • 🖥️ 支援 macOS、Linux 和 Windows

安裝 UV

使用官方安裝腳本(推薦)

macOS 和 Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

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

專案管理

1. 初始化專案

# 創建新專案
uv init example

# 進入專案目錄
cd example

# 添加依賴
uv add ruff

2. 管理依賴

# 添加套件
uv add pandas

# 更新依賴
uv sync

# 生成鎖定文件
uv lock

腳本管理

UV 可以管理單個腳本的依賴和環境:

# 創建腳本並添加內聯依賴
echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
uv add --script example.py requests

# 在隔離環境中運行腳本
uv run example.py

工具管理

UV 可以執行和安裝 Python 包提供的命令行工具:

# 使用 uvx 運行工具(uv tool run 的別名)
uvx pycowsay 'hello world!'

# 安裝工具
uv tool install ruff

Python 版本管理

UV 可以安裝和管理 Python 版本:

# 安裝最新版本
uv python install

# 安裝特定版本
uv python install 3.12

# 安裝多個版本
uv python install 3.11 3.12

# 安裝替代實現(如 PyPy)
uv python install [email protected]

# 查看已安裝版本
uv python list

pip 相容介面

UV 提供了與 pip 完全相容的介面:

# 創建虛擬環境
uv venv

# 安裝套件
uv pip install pandas

# 從 requirements.txt 安裝
uv pip sync requirements.txt

# 編譯依賴
uv pip compile requirements.in --universal --output-file requirements.txt

進階功能

1. 工作空間支援

# 在工作空間中管理多個專案
uv workspace add project1
uv workspace add project2

2. 自動 Python 下載

UV 會在需要時自動下載 Python 版本:

# 自動下載並使用 Python 3.12
uvx [email protected] -c "print('hello world')"

3. 使用系統 Python

# 強制使用系統 Python
uv run --no-managed-python script.py

最佳實踐

  1. 開發環境設置
# 初始化專案
uv init my-project
cd my-project

# 添加開發依賴
uv add --dev black ruff pytest

# 設置 Python 版本
uv python pin 3.12
  1. 持續整合
# 在 CI 環境中使用
curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip sync requirements.txt
  1. 工具管理
# 安裝常用開發工具
uv tool install black flake8 pre-commit tox twine

# 定期更新工具
uv tool upgrade

結語

UV 的出現為 Python 開發帶來了革命性的改變,它不僅提供了極速的包管理體驗,還整合了多個常用工具的功能。雖然它仍然是一個相對較新的工具,但其出色的效能和完整的功能集,使其成為 2024 年 Python 開發者的首選工具。

參考資料: