Python uv 進階實務:Python 版本、pip 介面與工具安裝
3 min read
當需求從「能跑就好」變成「多版本測試、既有 pipeline 相容、全域工具管理」,uv 一樣扛得住。這篇就是帶你從單刷副本升級到組隊打王。
Python 版本管理
uv 內建 Python 下載與管理,不用再裝 pyenv。
# 安裝多個版本
uv python install 3.10 3.11 3.12
# 專案固定版本(產生 .python-version)
uv python pin 3.11
# 指定版本建 venv
uv venv --python 3.12
# 執行時指定版本
uv run --python 3.10 pytest第一次用某版本會自動下載,之後直接用。
pip 相容介面
既有 CI、Docker、script 還在用 pip?uv 提供 drop-in 替代:
# 等同 pip install -r requirements.txt
uv pip install -r requirements.txt
# 編譯 requirements(跨平台、可重現)
uv pip compile requirements.in --universal -o requirements.txt
# 同步環境(嚴格依 lockfile)
uv pip sync requirements.txt
# 建 venv
uv venv換成 uv pip 後,指令參數幾乎一樣,但速度差一個數量級——就像從腳踏車換成摩托車,路一樣,體驗不一樣。老專案想升級又怕大改?先換 uv pip,無痛起飛。
全域工具安裝(uv tool)
常用工具不想每次都 uvx?裝成全域:
uv tool install ruff
uv tool install httpie
# 之後直接呼叫
ruff check .
http https://httpbin.org/get升級單一工具或全部:
uv tool upgrade ruff
uv tool upgrade --all
uv tool install裝的是獨立環境,不會跟專案依賴打架。要專案內固定版本,還是用uv add --dev。
腳本 lockfile 與 shebang
單一腳本也要可重現?可以鎖依賴:
uv lock --script example.py會產生 example.py.lock,之後 uv run example.py 會用這份 lockfile。
或做成可執行檔:
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["httpx"]
# ///
import httpx
print(httpx.get("https://example.com"))chmod +x fetch
./fetch下一步
進階能力點滿後,用一套維運規範收斂風險,少踩雷:
👉 最佳實踐