Python包管理工具之uv的使用詳細指南
uv 是一個新興的 Python 包管理工具,它旨在提供比 pip 和 poetry 更快、更現(xiàn)代的依賴管理體驗。uv 由 Charles Murphy 開發(fā),基于 Rust 構建,具有極高的性能和兼容性,支持標準的 requirements.txt 文件以及 pyproject.toml 中的依賴聲明。
一、uv 的特點
| 特點 | 描述 |
|---|---|
| 極速安裝 | 使用 Rust 編寫,依賴解析速度遠超 pip 和 Poetry |
| 安全性 | 支持簽名包驗證(PEP 458) |
| 支持多種格式 | 兼容 wheels、sdists、editable installs |
| 虛擬環(huán)境管理 | 自動創(chuàng)建和管理虛擬環(huán)境 |
| 依賴鎖定 | 自動生成 uv.lock 文件確??芍貜蜆嫿?/td> |
| 多種配置方式 | 支持 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. 初始化項目并創(chuàng)建虛擬環(huán)境
mkdir myproject && cd myproject uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate
uv venv 會自動在當前目錄下創(chuàng)建 .venv 虛擬環(huán)境。
2. 安裝依賴
使用 requirements.txt
uv pip install -r requirements.txt
安裝單個包
uv pip install requests
安裝開發(fā)依賴
uv pip install pytest --dev
注意:目前 --dev 僅在使用 pyproject.toml 時有效。
3. 生成依賴文件
uv pip freeze > requirements.txt
或使用:
uv lock
這會生成 uv.lock 文件,用于精確鎖定依賴版本。
4. 使用 pyproject.toml 管理依賴
你可以創(chuàng)建一個 pyproject.toml 來定義項目依賴:
[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. 可重復構建(Reproducibility)
通過 uv.lock 文件可以保證不同機器上的依賴完全一致:
uv sync
該命令會嚴格按照 uv.lock 中的版本安裝依賴。
2. 支持編輯模式(Editable Installs)
uv pip install -e .
適合本地開發(fā)調(diào)試。
3. 鏡像源設置(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 |
|---|---|---|---|
| 依賴解析速度 | ??? | ? | ?? |
| 鎖機制 | ? (uv.lock) | ? | ? (poetry.lock) |
| 虛擬環(huán)境管理 | ? | ?(需配合 venv) | ? |
| 編輯模式支持 | ? | ? | ? |
| 依賴沖突檢測 | ? | ? | ? |
| 打包發(fā)布支持 | ? | ? | ? |
| 鏡像源支持 | ? | ? | ? |
| 安裝方式 | 獨立二進制、pip、conda | pip | pip、standalone installer |
六、適用場景推薦
| 場景 | 推薦 |
|---|---|
| 快速腳本、小項目 | ? uv + requirements.txt |
| Web 后端開發(fā) | ? uv + pyproject.toml |
| 數(shù)據(jù)科學、AI 模型訓練 | ? uv + Conda(如 Miniforge) |
| 需要打包發(fā)布的庫 | ? Poetry |
| 需要多 Python 版本切換 | ? pyenv + uv |
七、示例流程(從零開始)
# 創(chuà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 # 凍結依賴 uv pip freeze > requirements.txt # 生成鎖文件 uv lock # 后續(xù)只需運行: uv sync
以上就是Python包管理工具之uv的使用詳細指南的詳細內(nèi)容,更多關于Python uv包管理的資料請關注腳本之家其它相關文章!
相關文章
詳細解讀tornado協(xié)程(coroutine)原理
這篇文章主要介紹了詳細解讀tornado協(xié)程(coroutine)原理,涉及協(xié)程定義,生成器和yield語義,F(xiàn)uture對象,ioloop對象,函數(shù)裝飾器coroutine等相關內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
python實現(xiàn)批量注冊網(wǎng)站用戶的示例
今天小編就為大家分享一篇python實現(xiàn)批量注冊網(wǎng)站用戶的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python使用melt和pivot實現(xiàn)DataFrame格式轉換
在數(shù)據(jù)處理與分析中,經(jīng)常遇到數(shù)據(jù)需要進行格式轉換的情況,例如將數(shù)據(jù)從寬表格式轉換為長表格式,或?qū)?shù)據(jù)重新分組匯總,Pandas提供了豐富的reshape操作,尤其是melt和pivot這兩個函數(shù),使得DataFrame可以在寬表與長表之間高效轉換,本文介紹的非常詳細,需要的朋友可以參考下2025-01-01
Python中執(zhí)行調(diào)用JS的多種實現(xiàn)方法總結
這篇文章主要給大家介紹了關于Python中執(zhí)行調(diào)用JS的多種實現(xiàn)方法,在一些特殊的python應用場景下需要逆向執(zhí)行javascript代碼塊或者.js文件,需要的朋友可以參考下2023-08-08
基于Python實現(xiàn)將列表數(shù)據(jù)生成折線圖
這篇文章主要介紹了如何利用Python中的pandas庫和matplotlib庫,實現(xiàn)將列表數(shù)據(jù)生成折線圖,文中的示例代碼簡潔易懂,需要的可以參考一下2022-03-03
pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的全過程
社區(qū)版的pycharm跟專業(yè)版的pycharm應用差別還是不太大,下面這篇文章主要給大家介紹了關于pycharm社區(qū)版安裝django并創(chuàng)建一個簡單項目的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05

