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