如何使用 uv 工具從 pyproject.toml 和 uv.lock 快速安裝Python依賴(lài)
使用 uv 工具從 pyproject.toml 和 uv.lock 快速安裝 Python 依賴(lài)
摘要
uv 是一款現(xiàn)代化、超高速的 Python 包管理器,可替代傳統(tǒng)的 pip 和 pip-tools。在現(xiàn)代 Python 項(xiàng)目中,常用 pyproject.toml 來(lái)定義依賴(lài),而 uv.lock 則提供了可重現(xiàn)的鎖定機(jī)制。本文介紹如何在已知有 pyproject.toml 和 uv.lock 的前提下,通過(guò) uv 工具快速構(gòu)建項(xiàng)目依賴(lài)環(huán)境,并與 Conda、pip 等方式進(jìn)行簡(jiǎn)要比較。
一、背景說(shuō)明
Python 社區(qū)正在逐步向 pyproject.toml 統(tǒng)一依賴(lài)與構(gòu)建配置文件的方向發(fā)展。uv 是由 Astral 開(kāi)發(fā)的全新依賴(lài)解析和安裝工具,支持:
超快的解析與安裝(比 pip 快 8-10 倍)
原生支持
pyproject.toml和uv.lock不依賴(lài) Conda,采用輕量級(jí)虛擬環(huán)境管理
二、前提條件
確保你已經(jīng)安裝了 uv:
pip install uv # 或者使用 Homebrew(macOS) brew install astral-sh/tap/uv
?? 注意:
uv與conda不兼容,因此需要使用venv虛擬環(huán)境或其他輕量方式。
三、項(xiàng)目結(jié)構(gòu)
假設(shè)你的項(xiàng)目結(jié)構(gòu)如下:
your-project/ ├── pyproject.toml ├── uv.lock
pyproject.toml 用于定義依賴(lài),uv.lock 是鎖定具體包版本的文件。
四、創(chuàng)建并激活虛擬環(huán)境
uv venv # 會(huì)在項(xiàng)目根目錄生成 .venv 虛擬環(huán)境 source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows
如果你已經(jīng)有自己的 venv,也可以跳過(guò)這一步。
五、從 uv.lock 安裝依賴(lài)
使用如下命令即可安裝所有依賴(lài):
uv sync
uv 會(huì)自動(dòng)讀取 uv.lock,并根據(jù)其中鎖定的版本下載和安裝依賴(lài),確保完全一致的環(huán)境。
六、常用命令總結(jié)
| 命令 | 說(shuō)明 |
|---|---|
uv sync | 安裝所有鎖定依賴(lài) |
uv pip install <pkg> | 添加新依賴(lài)并更新 pyproject.toml |
uv pip freeze > uv.lock | 生成新的鎖定文件 |
uv venv | 創(chuàng)建虛擬環(huán)境 |
七、與 Conda/pip 的對(duì)比
| 工具 | 是否支持 lock 文件 | 安裝速度 | 虛擬環(huán)境兼容性 |
|---|---|---|---|
| uv | ? uv.lock | ?? 極快 | ? 兼容 venv |
| pip | ?(間接支持 requirements.txt) | ? 中等 | ? |
| conda | ?(conda-lock) | ?? 較慢 | ?(更適合系統(tǒng)依賴(lài)) |
八、總結(jié)
如果你的項(xiàng)目是純 Python 應(yīng)用、對(duì)可重現(xiàn)性和安裝速度有要求,那么 uv 是一個(gè)極具競(jìng)爭(zhēng)力的選擇。配合 pyproject.toml 和 uv.lock,可以輕松實(shí)現(xiàn)快速、可靠的環(huán)境搭建。
九、推薦閱讀
是否需要我補(bǔ)充一個(gè) Dockerfile 或 CI 示例來(lái)演示如何在構(gòu)建環(huán)境中使用 uv sync?
到此這篇關(guān)于使用 uv 工具從 pyproject.toml 和 uv.lock 快速安裝 Python 依賴(lài)的文章就介紹到這了,更多相關(guān)使用 uv 安裝 Python 依賴(lài)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?reduce()函數(shù)高級(jí)應(yīng)用案例(累積計(jì)算的藝術(shù))
reduce()函數(shù)是Python中用于累積計(jì)算的核心高階函數(shù),它能夠?qū)⒁粋€(gè)可迭代對(duì)象中的所有元素通過(guò)指定的函數(shù)進(jìn)行累積計(jì)算,最終返回一個(gè)單一的累積結(jié)果,本篇文章從多個(gè)角度深入解析reduce()函數(shù),幫助你全面掌握它的使用方法以及概念知識(shí),感興趣的朋友跟隨小編一起看看吧2025-08-08
Python 識(shí)別12306圖片驗(yàn)證碼物品的實(shí)現(xiàn)示例
這篇文章主要介紹了Python 識(shí)別12306圖片驗(yàn)證碼物品的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
python通過(guò)opencv實(shí)現(xiàn)圖片裁剪原理解析
這篇文章主要介紹了python通過(guò)opencv實(shí)現(xiàn)圖片裁剪原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
python自動(dòng)發(fā)送測(cè)試報(bào)告郵件功能的實(shí)現(xiàn)
這篇文章主要介紹了python自動(dòng)發(fā)測(cè)試報(bào)告郵件功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
Python文件夾與文件的操作實(shí)現(xiàn)代碼
最近在寫(xiě)的程序頻繁地與文件操作打交道,這塊比較弱,還好在百度上找到一篇不錯(cuò)的文章,這是原文傳送門(mén),我對(duì)原文稍做了些改動(dòng)2014-07-07
Python實(shí)現(xiàn)在一行中交換兩個(gè)變量
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)在一行中交換兩個(gè)變量功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
詳解Python數(shù)據(jù)可視化編程 - 詞云生成并保存(jieba+WordCloud)
這篇文章主要介紹了Python數(shù)據(jù)可視化編程 - 詞云生成并保存(jieba+WordCloud),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Python圖形繪制操作之正弦曲線(xiàn)實(shí)現(xiàn)方法分析
這篇文章主要介紹了Python圖形繪制操作之正弦曲線(xiàn)實(shí)現(xiàn)方法,涉及Python使用numpy模塊數(shù)值運(yùn)算及matplotlib.pyplot模塊進(jìn)行圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12

