最近要開發MCP 項目,uv工具使用是官方推薦的方式,逐要了解這個uv工具。整體理解如下:
一.uv工具的基本情況
UV 是一個由 Rust 編寫的現代化 Python 包管理工具,旨在通過極速性能和一體化功能替代傳統工具(如 pip、virtualenv、pip-tools 等),覆蓋依賴管理、虛擬環境創建、項目配置、依賴鎖定等全流程操作。其核心優勢在于速度極快(比 pip 快 10-100 倍)、兼容現有生態(支持?requirements.txt
?和?pyproject.toml
),且提供一站式解決方案(無需多工具切換)。
二、uv 與conda 什么關系
uv類似pip 和virtualenv等工具的集合
1.uv創建虛擬環境下,與conda的區別UV 不會自動安裝 Python 解釋器
UV 的?uv venv
?命令在創建虛擬環境時,會生成.venv的文件,依賴于系統中已安裝的 Python 解釋器。它的行為類似于 Python 自帶的?venv
?模塊:
-
若當前已激活某個 Python 環境(如通過 Conda 或?
pyenv
?安裝的 Python),UV 會基于該環境的解釋器創建虛擬環境。 -
若未激活任何環境,UV 默認使用系統的全局 Python 解釋器。
-
可以指定已經存在的python解釋器:如何指定 Python 版本?若需使用特定版本的 Python,需?提前通過其他工具安裝該版本(如?
pyenv
、Conda 或系統包管理器),再通過?--python
?參數指定路徑:如 uv venv .venv --python /bin/python
2.如果用conda創建虛擬環境下,也可以使用uv工具進行python包的管理,
在 Conda 環境中使用 UV
-
角色定位
-
? 正確:在 Conda 環境中,UV 可替代?
pip
,提供更快的包安裝和依賴解析,但?不會創建新的虛擬環境(如?.venv
)。 -
?? 關鍵補充:必須通過?
conda activate
?顯式激活目標環境,否則?uv run
?可能誤判環境(如切換到項目中的?.venv
)。
-
-
依賴管理分工
-
? 正確:Conda 負責管理?Python 解釋器版本、非 Python 依賴(如 CUDA、系統庫)。
-
? 正確:UV 負責管理?純 Python 包(如?
numpy
、requests
),且依賴關系可寫入?pyproject.toml
?或?requirements.txt
。
-
三、uv add 和uv pip install的區別
uv add
?和?uv pip install
?是 UV 工具中兩個關鍵命令,它們雖然都能安裝 Python 包,但設計目標和適用場景有顯著區別。以下是詳細對比:
功能定位對比
命令 | 核心功能 | 適用場景 |
---|---|---|
uv add | 將依賴聲明寫入?pyproject.toml ?并安裝包,支持分組(生產/開發依賴)。 | 項目管理:需要記錄依賴到配置文件。 |
uv pip install | 直接安裝包到當前環境,行為與?pip install ?一致,但速度更快。不修改任何配置文件。 | 臨時操作:快速安裝或調試,無需持久化依賴。 |
這個pyproject.toml 文件是記錄相關依賴庫信息的文件,有點類似pip下的requirements.txt,
利用這個文件,可以進行項目管理
安裝生產依賴:
uv install --only main
-
安裝所有依賴(包括開發依賴):
uv install
四、uvx是什么工具命令
臨時運行工具:?uvx
會在隔離的虛擬環境中臨時安裝并運行指定的工具,執行完畢后該環境會被清理。
-
快速試用工具:?適用于快速試用某個工具或運行一次性的任務,而無需在系統中永久安裝該工具。?
-
支持版本指定:?可以指定工具的版本,例如:?Astral Docs+1Astral Docs+1