uv 工具全方位介紹
起源與背景
uv 是由 Astral(pipx 作者)團隊用 Rust 語言開發的新一代 Python 包和環境管理工具。其目標是解決傳統 pip/venv/conda 在依賴解析慢、環境隔離繁瑣、命令復雜等方面的痛點,為現代 Python 項目提供極速、自動化、一體化的依賴和環境管理體驗。
主要特點
- 極致性能:uv 采用 Rust 實現,依賴解析和包安裝速度比 pip 快 10-100 倍(詳見官方基準測試)。
- 為什么快?Rust 實現的高效算法、并發下載、優化的依賴解析流程,使 uv 能極大提升解析和安裝效率。
- 一站式工具集成:uv 可替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等,統一管理依賴、環境、腳本、Python 版本和工具。
- 全局緩存與依賴去重:通過全局緩存和依賴去重機制,顯著節省磁盤空間,多項目共享依賴無需重復安裝。
- 自動環境與項目管理:每個項目自動創建
.venv
,支持 universal lockfile,支持大型項目工作區(workspaces)。 - 支持 Python 版本管理:可安裝和切換多版本 Python。
- 腳本運行與工具管理:支持帶內依賴元數據的腳本運行,支持直接安裝和運行 Python 工具包。
- pip 兼容命令行:完全兼容 pip 常用命令,遷移無門檻。
- 跨平臺,安裝便捷:支持 macOS、Linux、Windows,無需預裝 Rust/Python,可用 curl、pip、pipx 安裝。
安裝方法
macOS 和 Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
通過 pip 安裝(需已安裝 Python)
pip install uv
通過 pipx 安裝
pipx install uv
更多安裝方式和細節請參考 uv 官方安裝文檔
常見用法
1. 安裝依賴
uv pip install requests
uv pip install -r requirements.txt
2. 運行 Python 腳本
uv run main.py
uv run --python "C:/path/to/python.exe" main.py
3. 查看/管理依賴
uv pip list
uv pip freeze > requirements.txt
uv pip uninstall numpy
4. 自動創建虛擬環境
- 只需在項目目錄下運行任何 uv 命令,uv 會自動檢測并創建
.venv
環境。
如果要制定python 版本, 可以在工程根目錄下放一個.python-version
文件, 或者通過命令行指定python 版本。 否則uv會自動選擇一個版本下載。
5. 解析 pyproject.toml
- uv 會自動識別并安裝
pyproject.toml
、requirements.txt
、setup.py
中聲明的依賴。
常用命令速查表
命令 | 說明 |
---|---|
uv pip install 包名 | 安裝依賴包 |
uv pip uninstall 包名 | 卸載依賴包 |
uv pip list | 查看已安裝包 |
uv pip freeze | 導出依賴列表 |
uv run xxx.py | 在隔離環境中運行腳本 |
uv run --python 路徑 xxx.py | 用指定 Python 運行腳本 |
uv pip install -r requirements.txt | 按依賴文件安裝所有依賴 |
uv 相比 pip 的主要優勢
對比項 | pip(傳統工具) | uv(新一代工具) |
---|---|---|
依賴解析與安裝速度 | 較慢,解析和安裝大項目依賴時耗時明顯 | 極快,Rust 實現,依賴解析和包安裝速度大幅領先 |
虛擬環境管理 | 需手動用 venv/virtualenv 創建與激活 | 自動為每個項目創建和管理 .venv ,無需手動激活 |
自動識別依賴文件 | 僅支持 requirements.txt,pyproject.toml 支持有限 | 自動識別 pyproject.toml、requirements.txt、setup.py 等多種格式 |
一鍵運行腳本 | 需手動激活環境再運行腳本 | uv run xxx.py 自動在隔離環境中運行腳本 |
命令兼容性 | pip 命令標準 | 兼容 pip 子命令,且功能更豐富 |
安裝體驗 | 依賴沖突、環境不一致可能導致出錯 | 自動隔離、自動同步依賴,極大減少環境沖突 |
包緩存 | 支持緩存,但多環境間仍需重復安裝 | 高效緩存,自動重用已下載包,提升多項目間安裝速度 |
跨平臺支持 | 良好 | 同樣良好 |
總結
- uv 在依賴解析速度、自動環境管理、依賴文件識別和一鍵運行腳本等方面全面領先 pip。
- uv 適合追求開發效率、環境隔離和現代項目自動化管理的用戶。
- pip 仍是最廣泛兼容的傳統工具,適合簡單項目或對兼容性有極高要求的場景。
適用場景
- 現代 Python 項目開發、測試、部署
- 需要快速、自動化的依賴和環境管理
- 追求極致開發體驗和環境隔離的開發者
參考資料
- uv 官方文檔
- PEP 582(相關的本地包管理提案)