Python使用uv整合Pip、Pyenv和Venv的實戰(zhàn)指南
引言
Python 的包管理一直是個讓開發(fā)者“又愛又恨”的話題。從 pip 到 virtualenv,再到 poetry、conda、pdm,工具層出不窮,但似乎總覺得“差點意思”——要么慢,要么依賴沖突讓人頭禿。
最近,Python 圈子殺出了一匹黑馬—— uv。它是 Ruff(那個快到離譜的代碼檢查工具)團隊的新作,同樣用 Rust 編寫。這玩意的特點就是一個字:快!而且它是奔著“大一統(tǒng)”去的,能管包、管環(huán)境、甚至管 Python 版本。
今天咱們就來盤一盤這個被稱為“Python 基礎(chǔ)設(shè)施未來”的工具。
01. 為什么要用 uv?
簡單說,uv 想把原本分散的活兒全干了:
- 速度極快:比
pip和pip-tools快 10-100 倍(不夸張,Rust 寫的)。 - All-in-One:你不再需要
pyenv裝 Python,不需要venv建環(huán)境,不需要pip裝包,一個uv全搞定。
很多同學(xué)習(xí)慣用 pipenv,因為它解決了 pip 無法鎖定依賴版本的問題。但 pipenv 最大的痛點是解析依賴速度慢,甚至有時鎖定一個環(huán)境要喝杯咖啡的時間。uv 同樣支持鎖定文件(uv.lock),但它是瞬時完成的。如果你喜歡 pipenv 的自動化感,uv 會給你同樣的體驗,但快得像閃電。
02. 安裝 uv:開啟極速之旅
安裝非常簡單,甚至不需要你先安裝 Python。
macOS
推薦使用 Homebrew 安裝
brew install uv
或者使用官方安裝腳本來安裝
curl -LsSf https://astral.sh/uv/install.sh | sh
Linux
官方推薦使用 curl 安裝:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
可以使用 Winget 來安裝
winget install uv
也可以使用 powershell 進行安裝:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
如果你已經(jīng)有了 pip
當(dāng)然,你也可以像安裝普通 Python 包一樣安裝它(不推薦作為首選,但很方便):
pip install uv
注:安裝完成后,記得重啟一下終端,或者按照提示配置環(huán)境變量。
驗證
安裝完成之后,驗證安裝是否成功:
uv --version
03. 管理 Python 版本:忘掉 pyenv 吧
以前我們要安裝不同版本的 Python,通常會用 pyenv 或者去官網(wǎng)下載安裝包。現(xiàn)在 uv 直接接管了。
查看可用的 Python 版本:
uv python list
安裝特定的 Python 版本:
# 安裝 Python 3.12 uv python install 3.12 # 安裝 Python 3.9 uv python install 3.9
uv 會自動下載并管理這些版本,你甚至不需要手動配置系統(tǒng)路徑,它會在項目運行時自動查找合適的版本。
04. 項目初始化與虛擬環(huán)境
以前我們習(xí)慣先 python -m venv .venv,現(xiàn)在 uv 把這套流程變得更符合現(xiàn)代工程習(xí)慣。
初始化一個新項目
# 創(chuàng)建一個名為 my-project 的新項目 uv init my-project # 進入目錄 cd my-project
uv init 會幫你生成 pyproject.toml(現(xiàn)代 Python 項目的標(biāo)準(zhǔn)配置文件)和一個 .python-version 文件。
自動創(chuàng)建虛擬環(huán)境
當(dāng)你在這個項目里添加依賴或者運行代碼時,uv 會自動為你創(chuàng)建和管理虛擬環(huán)境。
如果你非要手動創(chuàng)建一個傳統(tǒng)的虛擬環(huán)境,也可以:
# 在當(dāng)前目錄創(chuàng)建 .venv uv venv # 激活環(huán)境(macOS/Linux) source .venv/bin/activate # 激活環(huán)境(Windows) .venv\Scripts\activate
然后在項目中指定 python 的版本
# 為當(dāng)前項目固定 Python 3.11 uv python pin 3.11
05. 包管理與依賴添加
這是大家最常用的功能。uv 的命令設(shè)計非常直觀
安裝包:
# 安裝最新版本 uv pip install requests # 安裝特定版本 uv pip install requests==2.31.0 # 從 requirements.txt 安裝 uv pip install -r requirements.txt
安裝包到開發(fā)環(huán)境
uv pip install --dev pytest
執(zhí)行后,uv 會做三件事:
- 下載包(如果緩存里沒有)。
- 安裝到虛擬環(huán)境。
- 自動更新
pyproject.toml和uv.lock文件(鎖定版本,確保團隊協(xié)作一致性)。
升級包
uv pip upgrade requests
卸載包
uv pip uninstall requests
同步依賴 (Sync)
當(dāng)你拉取了同事的代碼,或者切換了分支,需要把環(huán)境同步到最新狀態(tài):
# 根據(jù) lock 文件同步環(huán)境 uv sync
06. 運行代碼
以前我們需要先 source .venv/bin/activate 激活環(huán)境,然后再 python app.py。 使用 uv,你可以直接運行:
# 在項目的虛擬環(huán)境中運行 app.py uv run app.py # 運行安裝在環(huán)境中的工具,比如 pytest uv run pytest
uv run 會自動檢測并使用當(dāng)前項目的虛擬環(huán)境,非常省心。
07. 舊項目遷移:如何從 pip/poetry/pipenv 遷移到 uv?
如果你手頭有一個老項目,想享受 uv 的速度,遷移其實很平滑。
場景一:只有 requirements.txt
這是最常見的場景。
# 1. 初始化 uv 項目 uv init # 2. 直接安裝 requirements.txt 里的依賴 uv pip install -r requirements.txt
場景二:直接替代 pip 使用
如果你不想改變項目結(jié)構(gòu),只想單純加速 pip install 的過程,你可以把 uv 當(dāng)作 pip 的替身:
# 創(chuàng)建環(huán)境 uv venv # 激活環(huán)境 (Windows: .venv\Scripts\activate) source .venv/bin/activate # 用 uv 的 pip 接口安裝 uv pip install requests
場景三:從 Poetry 遷移
uv 原生支持解析 pyproject.toml。雖然它有自己的格式,但它能很好地兼容標(biāo)準(zhǔn)。你可以直接在 Poetry 項目目錄下嘗試 uv sync,或者索性刪除 poetry.lock,使用 uv add 重新構(gòu)建依賴樹。
場景四:從 Pipenv 遷移
如果你的項目里有 Pipfile 和 Pipfile.lock,遷移到 uv 非常直接:
- 生成標(biāo)準(zhǔn)依賴:由于
uv目前主要基于pyproject.toml標(biāo)準(zhǔn),你可以先用pipenv導(dǎo)出依賴:
pipenv requirements > requirements.txt
- 讓 uv 接管:
# 初始化 uv uv init # 將導(dǎo)出的依賴添加到 uv 記錄中 cat requirements.txt | xargs uv add
- 清理舊物:遷移完成后,你可以放心地刪掉
Pipfile和Pipfile.lock,擁抱uv.lock。
總結(jié)
uv 不僅僅是一個包安裝器,它正在演變成 Python 開發(fā)的標(biāo)準(zhǔn)工作流工具。
- 對于新手:不用再糾結(jié)什么是 venv,什么是系統(tǒng) Python,
uv init之后直接寫代碼。 - 對于老手:極速的安裝體驗和符合直覺的
Workspaces管理,能大幅提升開發(fā)效率。
天下武功,唯快不破。建議大家趕緊在自己的開發(fā)機上試一試,大概率你會回不去!
到此這篇關(guān)于Python使用uv整合Pip、Pyenv和Venv的實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)Python uv整合Pip、Pyenv和Venv內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python的線程使用隊列Queue來改造轉(zhuǎn)賬場景
前篇我們了隊列Queue和轉(zhuǎn)賬場景這次趁熱學(xué)委展示一下使用隊列解決轉(zhuǎn)賬場景的問題,這篇文章主要介紹了Python的線程使用隊列來改造轉(zhuǎn)賬場景,需要的朋友可以參考一下2022-02-02
python的?PyPDF2實現(xiàn)pdf文件切割和合并
大家好,本篇文章主要講的是python的?PyPDF2實現(xiàn)pdf文件切割和合并,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-02-02
Numpy將二維數(shù)組添加到空數(shù)組的實現(xiàn)
今天小編就為大家分享一篇Numpy將二維數(shù)組添加到空數(shù)組的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python 應(yīng)用之Pycharm 新建模板默認(rèn)添加編碼格式-作者-時間等信息【推薦】
這篇文章主要介紹了Pycharm 新建模板默認(rèn)添加編碼格式-作者-時間等信息 ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06

