Python包管理工具之uv的使用詳細(xì)指南
uv 是一個(gè)新興的 Python 包管理工具,它旨在提供比 pip 和 poetry 更快、更現(xiàn)代的依賴管理體驗(yàn)。uv 由 Charles Murphy 開發(fā),基于 Rust 構(gòu)建,具有極高的性能和兼容性,支持標(biāo)準(zhǔn)的 requirements.txt 文件以及 pyproject.toml 中的依賴聲明。
一、uv 的特點(diǎn)
| 特點(diǎn) | 描述 |
|---|---|
| 極速安裝 | 使用 Rust 編寫,依賴解析速度遠(yuǎn)超 pip 和 Poetry |
| 安全性 | 支持簽名包驗(yàn)證(PEP 458) |
| 支持多種格式 | 兼容 wheels、sdists、editable installs |
| 虛擬環(huán)境管理 | 自動創(chuàng)建和管理虛擬環(huán)境 |
| 依賴鎖定 | 自動生成 uv.lock 文件確保可重復(fù)構(gòu)建 |
| 多種配置方式 | 支持 requirements.txt、pyproject.toml 等 |
| 跨平臺 | 支持 macOS、Linux、Windows |
二、安裝 uv
使用官方推薦方式(適用于大多數(shù)用戶)
# macOS / Linux 用戶使用以下命令安裝 curl -Ls https://install.uv.rs | sh
安裝后會將 uv 添加到你的 PATH 中。
使用 pip 安裝(Python >= 3.8)
pip install uv
使用 conda/mamba 安裝(Conda 用戶)
conda install -c conda-forge uv
三、基本使用方法
1. 初始化項(xiàng)目并創(chuàng)建虛擬環(huán)境
mkdir myproject && cd myproject uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate
uv venv 會自動在當(dāng)前目錄下創(chuàng)建 .venv 虛擬環(huán)境。
2. 安裝依賴
使用 requirements.txt
uv pip install -r requirements.txt
安裝單個(gè)包
uv pip install requests
安裝開發(fā)依賴
uv pip install pytest --dev
注意:目前 --dev 僅在使用 pyproject.toml 時(shí)有效。
3. 生成依賴文件
uv pip freeze > requirements.txt
或使用:
uv lock
這會生成 uv.lock 文件,用于精確鎖定依賴版本。
4. 使用 pyproject.toml 管理依賴
你可以創(chuàng)建一個(gè) pyproject.toml 來定義項(xiàng)目依賴:
[project]
name = "myapp"
version = "0.1.0"
dependencies = [
"requests",
"fastapi>=0.68.0,<0.70.0"
]
[build-system]
requires = ["setuptools>=42"]
build-backend = "setuptools.build_meta"
然后執(zhí)行:
uv sync
這會根據(jù) pyproject.toml 安裝依賴,并自動生成 uv.lock 文件。
5. 升級依賴
uv pip upgrade requests
升級所有依賴:
uv pip upgrade --all
6. 刪除依賴
uv pip uninstall requests
四、高級功能
1. 可重復(fù)構(gòu)建(Reproducibility)
通過 uv.lock 文件可以保證不同機(jī)器上的依賴完全一致:
uv sync
該命令會嚴(yán)格按照 uv.lock 中的版本安裝依賴。
2. 支持編輯模式(Editable Installs)
uv pip install -e .
適合本地開發(fā)調(diào)試。
3. 鏡像源設(shè)置(Mirror Support)
uv pip install requests --index-url https://pypi.tuna.tsinghua.edu.cn/simple
支持國內(nèi)鏡像加速安裝。
五、uv vs pip vs poetry 對比
| 功能 | uv | pip | poetry |
|---|---|---|---|
| 依賴解析速度 | ??? | ? | ?? |
| 鎖機(jī)制 | ? (uv.lock) | ? | ? (poetry.lock) |
| 虛擬環(huán)境管理 | ? | ?(需配合 venv) | ? |
| 編輯模式支持 | ? | ? | ? |
| 依賴沖突檢測 | ? | ? | ? |
| 打包發(fā)布支持 | ? | ? | ? |
| 鏡像源支持 | ? | ? | ? |
| 安裝方式 | 獨(dú)立二進(jìn)制、pip、conda | pip | pip、standalone installer |
六、適用場景推薦
| 場景 | 推薦 |
|---|---|
| 快速腳本、小項(xiàng)目 | ? uv + requirements.txt |
| Web 后端開發(fā) | ? uv + pyproject.toml |
| 數(shù)據(jù)科學(xué)、AI 模型訓(xùn)練 | ? uv + Conda(如 Miniforge) |
| 需要打包發(fā)布的庫 | ? Poetry |
| 需要多 Python 版本切換 | ? pyenv + uv |
七、示例流程(從零開始)
# 創(chuàng)建項(xiàng)目目錄 mkdir hello-uv && cd hello-uv # 創(chuàng)建虛擬環(huán)境 uv venv # 激活虛擬環(huán)境 source .venv/bin/activate # 安裝依賴 uv pip install requests # 查看已安裝包 uv pip list # 凍結(jié)依賴 uv pip freeze > requirements.txt # 生成鎖文件 uv lock # 后續(xù)只需運(yùn)行: uv sync
以上就是Python包管理工具之uv的使用詳細(xì)指南的詳細(xì)內(nèi)容,更多關(guān)于Python uv包管理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python實(shí)現(xiàn)文件+參數(shù)發(fā)送request的實(shí)例代碼
這篇文章主要介紹了python實(shí)現(xiàn)文件+參數(shù)發(fā)送request的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Python的標(biāo)準(zhǔn)模塊包json詳解
這篇文章主要介紹了Python的標(biāo)準(zhǔn)模塊包json詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
Python中str.format()和f-string的使用
本文主要介紹了Python中str.format()和f-string的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python實(shí)現(xiàn)將多個(gè)空格換為一個(gè)空格.md的方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)將多個(gè)空格換為一個(gè)空格.md的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
PyQt5每天必學(xué)之帶有標(biāo)簽的復(fù)選框
這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之復(fù)選框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
使用python?matplotlib畫折線圖實(shí)例代碼
Matplotlib是一個(gè)Python工具箱,用于科學(xué)計(jì)算的數(shù)據(jù)可視化,下面這篇文章主要給大家介紹了關(guān)于如何使用python?matplotlib畫折線圖的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn)
這篇文章主要介紹了Python爬蟲進(jìn)階之爬取某視頻并下載的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

