uv:極速套件與專案管理器
在 Python 世界中,pip 和 venv 是每位開發者都非常熟悉的工具,分別用於管理套件和虛擬環境。然而,隨著專案規模變大、相依性變得複雜,pip 的解析與安裝速度可能會成為開發流程中的瓶頸。Astral 推出了 uv 套件與專案管理工具。
uv 是一個用 Rust 語言編寫的 Python 套件與專案管理器,它的設計目標是「極速」。uv 不僅是一個套件安裝器,更是一個整合了專案管理、虛擬環境建立、Python 版本管理等多功能的綜合工具鏈。
🤔 什麼是 uv?
uv 是一個整合式的 Python 套件安裝器與解析器。由於它使用 Rust 打造,並運用了先進的快取策略,其速度比 pip 和 conda 快上 10-100 倍。它將多個傳統工具的功能集於一身:
- 套件管理:可作為
pip的直接替代品,用於安裝、移除、列出套件。 - 虛擬環境管理:內建
venv功能,讓你快速建立與管理虛擬環境。 - 專案管理:透過
pyproject.toml管理專案相依性,類似於Poetry或PDM。 - Locking & Syncing:支援
uv.lock或requirements.lock,確保團隊成員與部署環境的相依性完全一致。 - Python 版本管理:實驗性地支援安裝和管理 Python 版本。
簡單來說,uv 的目標是提供一個更快速、更現代化、更統一的 Python 開發體驗。
🚀 安裝與更新 uv
安裝 uv 非常簡單,你可以透過官方腳本或 pip 來完成。
使用 PowerShell 安裝 (Windows) 這是官方推薦的安裝方式,它會安裝一個獨立的 uv 執行檔。
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"使用 pip 安裝 如果你已經有 Python 環境,也可以直接用 pip 安裝。
pip install uv更新 uv 更新方式取決於你的安裝方法。
- 如果是透過官方腳本安裝的,使用
self update指令:
uv self update- 如果是透過
pip安裝的,則使用pip進行更新:
pip install uv -U🛠️ 建立專案與虛擬環境
uv 讓建立新專案和虛擬環境的流程變得非常流暢。
初始化專案 使用
uv init指令來初始化一個新專案。它會為你建立一個pyproject.toml檔案,這是現代 Python 專案的標準設定檔。bashuv init <PROJECT_NAME>建立虛擬環境 接著,使用
uv venv建立虛擬環境。你還可以透過--python參數指定要使用的 Python 版本。bash# 使用預設 Python uv venv # 指定 Python 3.11 uv venv --python 3.11啟動與停用虛擬環境 這一步與傳統的
venv完全相同。在 Windows 環境下,執行activate腳本即可。bash# 啟動虛擬環境 .venv\Scripts\activate # 處理完畢後停用 deactivate
📦 管理 Python 套件
uv 提供了兩種管理套件的方式:現代化的 uv add 和與 pip 相容的 uv pip。
uv add <PACKAGE>這是推薦的管理專案相依性的方式。它會將套件新增到pyproject.toml檔案中,然後安裝它。這確保了你的設定檔與實際環境同步。若要移除,則使用uv remove。bash# 新增一個執行時期相依性 uv add requests # 新增一個開發時期相依性 uv add pytest --devuv pip install <PACKAGE>如果你習慣了pip的指令,uv也提供了完全相容的介面,但速度快得多。這類指令不會修改pyproject.toml,適合快速測試或在腳本中使用。bash# 安裝套件 uv pip install <PACKAGE> # 移除套件 uv pip uninstall <PACKAGE> # 列出已安裝的套件 uv pip list
🔄 更新與同步相依性
為了確保開發環境的可重現性 (reproducibility),uv 引入了 lock 和 sync 的概念。
uv lock --upgrade這個指令會讀取pyproject.toml中的相依性規則 (例如requests>=2.0),然後找出所有符合條件的最新版本,並將它們的精確版本號寫入uv.lock檔案。--upgrade參數會強制更新到最新版本。bashuv lock --upgradeuv sync這個指令是確保你當前虛擬環境與uv.lock檔案完全一致的關鍵。它會讀取uv.lock,並快速安裝、移除或更新套件,使環境狀態與 lockfile 保持同步。這在團隊協作或部署時非常重要。bashuv sync
🐍 管理 Python 版本
uv 還加入了管理 Python 直譯器的功能。
列出可安裝的 Python 版本
bashuv python list安裝指定的 Python 版本
bashuv python install <VERSION>例如:
uv python install 3.12移除已安裝的 Python 版本
bashuv python uninstall <VERSION>
這個功能讓 uv 成為一個更加全能的工具,讓你可以完全在一個工具內完成從 Python 版本管理到專案開發的所有事情。