uv 一個工具管掉 Python 版本、虛擬環境與依賴
uv 是 Astral 用 Rust 寫的 Python 工具鏈,宣稱安裝速度比 pip 快上百倍。但真正的價值不只是快——它把原本分散在 pyenv(版本)、venv(環境)、pip(套件)、pipx(一次性工具)的職責收進同一個 CLI。
三件事同一個入口
# Python 版本
uv python install 3.12 3.13 # 安裝指定版本
uv python list # 查看已安裝版本
uv python pin 3.12 # 為當前專案釘住版本
uv python pin 3.12 --global # 釘住全域預設版本
# 專案與依賴
uv init # 建立新專案
uv add pandas numpy # 新增依賴
uv add --dev pytest ruff # 新增開發用依賴(不進正式環境)
uv sync # 依 lock file 把環境同步成一致狀態
# 執行
uv run python main.py # 在專案的虛擬環境內執行
uv run pytest心智模型:不用手動 activate
uv run 會自己找到並使用專案的虛擬環境,所以那套「先 source .venv/bin/activate 再跑指令」的儀式消失了。環境的真相來自專案裡的 lock file,uv sync 負責讓實際環境對齊它——不是靠人記得裝過什麼。
uv python pin 產生的版本宣告同理:Python 版本變成專案設定的一部分,而不是機器上的全域狀態。
一次性工具則不進專案依賴 → uvx 讓工具用完即丟,不進專案依賴
相關:Pip