
UV:2024 年最快速的 Python 包管理器完全指南
UV 是由 Astral 團隊開發的新一代 Python 包管理器,於 2024 年發布。它不僅是一個包管理器,更是一個完整的 Python 專案管理工具,可以替代 pip
、pip-tools
、pipx
、poetry
、pyenv
、twine
、virtualenv
等多個工具。
核心特性
根據 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
最佳實踐
- 開發環境設置
# 初始化專案
uv init my-project
cd my-project
# 添加開發依賴
uv add --dev black ruff pytest
# 設置 Python 版本
uv python pin 3.12
- 持續整合
# 在 CI 環境中使用
curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip sync requirements.txt
- 工具管理
# 安裝常用開發工具
uv tool install black flake8 pre-commit tox twine
# 定期更新工具
uv tool upgrade
結語
UV 的出現為 Python 開發帶來了革命性的改變,它不僅提供了極速的包管理體驗,還整合了多個常用工具的功能。雖然它仍然是一個相對較新的工具,但其出色的效能和完整的功能集,使其成為 2024 年 Python 開發者的首選工具。
參考資料: