地表最快的 Python 管理工具 uv!PDM、pipx 的功能一手包辦
uv 是一款用 Rust 編寫的 CLI 工具,讓你以現代化的方式管理 Python 專案/虛擬環境/CLI Tools!
續上篇
繼上次的文章後,目前我已經全面改用 uv 進行 Python 的專案管理。
那麼為什麼會從 PDM + uv 的組合改為只使用 uv 呢?
- uv 的速度極快:uv 是由開發 Ruff 的同一個團隊 Astral 使用 Rust 語言開發的 Python 管理工具。性能跟 pip 比起來可達 10 倍 ~ 100 倍!
- uv 整合了多個工具的功能:
uv:Python 套件及虛擬環境管理,功能與 PDM/Poetry 相似。uv tool:功能與 pipx 相似,可以為每一個 CLI 工具開一個獨立的虛擬環境並安裝。
- 使用方便:使用 uv 時不用像 pdm 要先
pdm python install安裝好要使用的 Python,而是直接在初始化專案時uv init --python 3.13.2指定版本,之後安裝套件前就會自動抓取電腦中的 Python 並建立虛擬環境,若沒有則自動安裝。
Python 專案管理工具比較
| 名稱 | 特色 | 缺點 |
|---|---|---|
| conda | 特別支援許多數據科學的工具、不只支援 Python、能處理原本需要手動安裝到系統的二進制工具 | 必須要先 conda active 把虛擬環境打開、虛擬環境跟專案預設存在不同地方、檔案較大、與 pip 共用有時會出問題 |
| pdm | 功能完善、用於專案與虛擬環境、套件管理、build | 以 Python 編寫,速度較 uv 緩慢 |
| pyenv | 專注於管理不同版本的 Python | 不處理套件管理,通常需要配合 pip 使用、Windows 平台支援度不如 Linux/macOS |
| virtualenv | 輕量級虛擬環境 | 僅處理環境隔離,不處理套件管理、需要手動啟動環境 |
| pipx | 專門管理 Python CLI 工具,為每個工具單獨創一個虛擬環境管理 | 僅適合管理 CLI 工具,不適合專案管理 |
| uv | 不僅支援專案、虛擬環境管理、還包含了 uv tool 套件管理工具(功能像 pipx)、跨平台支援 | 專案較新,可能不如老牌工具完善,還有發展空間 |
uv 介紹
uv 就像 PDM 一樣,是個現代化的 Python 專案管理器,他可以讓我們更方便的建立、管理、與使用虛擬環境。
與 PDM 不同的是,當你輸入 uv init 就會直接初始化專案,不會有問答環節。我們可以使用參數設定專案的細節:
uv init my_project --python 3.13.2接著就會創一個 my_project 資料夾,並且在 pyproject.toml 中設定指定的 Python 版本。
(你也可以不輸入專案名稱,例如 uv init --python 3.13.2 就會直接在當下的資料夾初始化專案,而不另外創資料夾。)
一些其他常用的指令:
uv init初始化專案uv add <package>安裝套件uv remove <package>移除套件uv run <command>使用當前專案的環境執行命令
uv 在 remove 套件時,也會同步把虛擬環境中不再需要使用的依賴套件移除!不像
pip,在pip uninstall時只會移除指定的套件本身,相關的依賴套件還是會留在虛擬環境中。
更厲害的是,uv 還結合了類似 pipx 的功能,我們可以透過 uv tool 指令來使用:
uv tool install <tool>安裝工具,比如安裝 Ruff 可以輸入uv tool install ruffuv tool uninstall <tool>解除安裝工具uv tool run <tool>使用uv tool安裝的工具,比如uv tool run ruff可以執行安裝好的 ruff 工具
因為
uv tool run有點太長了,所以官方有一個 aliasuvx!你可以用uvx ruff代表uv tool run ruff。
自製專案模板
在 Python 專案開發中,我通常會用到以下的一些工具:
我把 ruff 及 mypy 相關的設定寫在 ruff.toml 及 mypy.ini 中,以便日後專案開發使用。有興趣的可以前往 Python Project Template 查看!
模板使用說明
- 在電腦中安裝 uv
- 在 VSCode/Cursor 中安裝 Python、Pylance、Jupyter、Ruff、Mypy (By Matan Gover) 等套件
- 將模板 Clone 到想開發的地方
- 在專案根目錄執行
uv init初始化專案並且選擇需要的 Python 版本 - 快樂開發
結語
自從用了 uv 之後,許多的 Python 工具都不需要安裝了!而且速度又快,真的是很符合我的喜好。希望這篇文章可以幫到有需要的人!
部分內容可能已過時