Python

uv:Astral 的全能 Python 套件與專案管理器

uv 是一個用 Rust 編寫的極速 Python 套件與專案管理器,取代 pip、pipx、poetry、pyenv 和 virtualenv,效能快 10-100 倍。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
uv:Astral 的全能 Python 套件與專案管理器

Python 的套件生態系統長期以來分散在多個工具之間。需要安裝套件?用 pip。需要隔離環境?用 venv 或 virtualenv。需要依賴管理?用 Poetry 或 Pipenv。需要不同 Python 版本?用 pyenv。需要安裝 CLI 工具?用 pipx。uv 將整個工具鏈收納到一個單一的、極速的 Rust 二進位檔中,處理所有 Python 套件工作流程。

由 Astral 創建──也就是 Ruff 檢查器和 Ty 型別檢查器的同一團隊──uv 代表了他們對統一 Python 工具鏈願景的頂峰。uv 用 Rust 編寫並針對速度進行了最佳化,它以一個單一、一致的命令列介面取代了 pip、pipx、poetry、pyenv 和 virtualenv 的功能,執行速度比它所取代的工具快 10 到 100 倍。

對開發者體驗的影響是巨大的。安裝數百個依賴套件──pip 需要幾分鐘來解析和下載──uv 在幾秒鐘內完成。為不同專案建立全新環境幾乎是即時的。而用單一工具管理 Python 版本、虛擬環境和專案依賴的能力,消除了歷來困擾 Python 專案設定的配置開銷。


uv 如何統合 Python 工具鏈?

uv 的架構建立在一個洞察之上:Python 套件工具共享基本操作──下載套件、解析依賴、管理環境──而一個單一的最佳化實作可以勝過一組獨立工具的集合。

graph LR
    A[uv CLI] --> B[套件安裝器]
    A --> C[依賴解析器]
    A --> D[環境管理器]
    A --> E[專案管理器]
    A --> F[Python 版本管理器]
    A --> G[工具安裝器]
    B --> H[套件註冊中心\nPyPI / 自訂索引]
    C --> H
    D --> I[虛擬環境]
    E --> J[專案配置]
    F --> K[Python 下載]
    G --> I

uv 中的每個子命令都對應到一個熟悉的工具:uv pip install 取代 pip,uv venv 取代 virtualenv,uv python install 取代 pyenv,uv tool install 取代 pipx,而 uv init / uv add 取代 poetry 的專案管理。但與這些獨立工具不同,uv 在所有操作之間共享一個共同的快取、解析器和執行引擎。


uv 與傳統 Python 套件工具相比如何?

uv 與傳統工具之間的效能差異在套件管理的每個面向都相當顯著。

操作pipPoetryuv加速倍數
安裝 100 個套件45-90 秒60-120 秒1-3 秒30-50 倍
解析依賴30-60 秒45-90 秒0.5-2 秒60-100 倍
建立虛擬環境2-5 秒3-8 秒<0.1 秒50 倍以上
從鎖定檔安裝30-45 秒40-60 秒0.5-1 秒60-80 倍
安裝單一套件1-3 秒2-5 秒<0.1 秒20 倍以上
鎖定檔生成30-60 秒45-90 秒0.5-2 秒60-100 倍

這些基準測試假設暖快取。冷安裝(首次,無快取)仍然比 pip 快 5-10 倍,這得益於並行下載、最佳化的 HTTP 處理和更快的 wheel 建置器。


uv 提供哪些專案管理功能?

除了套件安裝之外,uv 還提供完整的專案管理工作流程,可與 Poetry 和 PDM 媲美。

功能uvPoetryPDMpip + venv
專案初始化uv initpoetry initpdm init手動
新增依賴uv addpoetry addpdm add手動編輯 + pip install
移除依賴uv removepoetry removepdm remove手動編輯
鎖定檔uv.lockpoetry.lockpdm.lock無 (pip freeze)
版本管理uv python install需 pyenv需 pyenv需 pyenv
腳本/任務uv runpoetry runpdm run手動
建置/發布uv builduv publishpoetry buildpoetry publishpdm buildpdm publishbuild + twine

uv 的專案管理設計為直觀易用,無論使用者來自何種背景。uv add requests 既將依賴新增到 pyproject.toml 也安裝它,就像 poetry 一樣。uv sync 從鎖定檔安裝所有依賴。而 uv run 在專案的虛擬環境中執行命令,無需手動啟動。


uv 如何處理 Python 版本管理?

Python 版本管理傳統上由 pyenv 處理,這需要 shell 整合且配置可能很複雜。uv 將版本管理直接內建到工具中。

版本管理任務uv 命令傳統工具傳統命令
列出可用版本uv python listpyenvpyenv install --list
安裝 Python 版本uv python install 3.12pyenvpyenv install 3.12
設定專案 Python 版本uv python pin 3.12pyenvpyenv local 3.12
尋找當前 Pythonuv python findwhich/wherewhich python
使用特定 Pythonuv run --python 3.11pyenvpyenv shell 3.11

uv 從 Astral Python Build Standalone 專案下載預建置的 Python 二進位檔,該專案為所有主要平台提供最佳化的 Python 建置。這消除了從原始碼編譯 Python 的需求(如 pyenv 的預設方式),並大大加快了 Python 版本管理的速度。


FAQ

什麼是 uv? uv 是 Astral 用 Rust 編寫的極速 Python 套件與專案管理器。它將 pip、pipx、poetry、pyenv 和 virtualenv 的功能統一到一個工具中,效能快 10-100 倍。

uv 如何達到如此快的速度? uv 使用 Rust 編寫,採用積極的快取、並行下載和最佳化的依賴解析。它並行下載套件、廣泛地磁碟快取,並使用 SAT 求解器進行依賴解析。

uv 能完全取代 pip 嗎? 可以,uv 設計為 pip 的直接替代品。它支援 pip 的命令列介面、需求檔案、可編輯安裝和所有標準 pip 工作流程,但執行速度快 10-100 倍。

uv 支援虛擬環境管理嗎? 是的,uv 提供類似 virtualenv 和 pyenv 的內建虛擬環境管理。它可以建立、啟用和管理不同 Python 版本和依賴集的環境。

uv 適合生產環境的 CI/CD 嗎? 是的,uv 特別為 CI/CD 環境設計。其速度、確定性解析和內建快取使其成為自動化建置管線的理想選擇,在這種環境下每一秒都很重要。


延伸閱讀

TAG