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

下一步

進階能力點滿後,用一套維運規範收斂風險,少踩雷:
👉 最佳實踐