當前位置: 妍妍網 > 碼農

Python包管理器的未來,Rust實作!

2024-03-16碼農

開源軟體總是將創新帶入我們的技術棧,在Python界,高效的包管理器是每個Python開發者的夢想。今天,讓我們一起深入了解並套用一個名為uv的開源計畫,這是一個在Rust中編寫的極速Python包安裝及解析器!

uv計畫概述

uv作為pip、pip-tools和virtualenv的替代品,不僅在速度上有顯著提升,還在磁盤利用率、便攜性和功能上進行了最佳化。它由Astral公司後援,Astral還是Ruff這個計畫的創造者。讓我們來看看uv都提供了哪些特色功能:

  • 作為pip和pip-tools常見命令的替代品

  • 速度比pip和pip-tools快10到100倍

  • 有效利用磁盤空間,透過全域緩存來去重依賴

  • 無需Rust或Python環境,透過curl、pip、pipx等即可安裝

  • 支持macOS、Linux和Windows

  • 提供版本覆蓋和備選解析策略等高級功能

  • 錯誤訊息友好,內建沖突跟蹤解析器

  • 安裝及快速開始

    可以透過以下一種或多種方法安裝uv:

    # 在macOS和Linux上
    curl -LsSf https://astral.sh/uv/install.sh | sh

    #
     在Windows上
    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

    #
     透過pip安裝
    pip install uv

    #
     透過pipx安裝
    pipx install uv

    #
     透過Homebrew安裝
    brew install uv

    #
     透過Pacman安裝
    pacman -S uv

    建立虛擬環境,很簡單:

    uv venv # 在.venv中建立虛擬環境。

    啟用虛擬環境:

    # 在macOS和Linux上
    source .venv/bin/activate
    # 在Windows上
    .venv\Scripts\activate

    在虛擬環境中安裝包:

    uv pip install flask # 安裝Flask
    uv pip install -r requirements.txt # 從requirements.txt檔中安裝
    uv pip install -e . # 以可編輯模式安裝當前計畫
    uv pip install "package @ ." # 從磁盤安裝當前計畫
    uv pip install "flask[dotenv]" # 安裝帶有"dotenv"額外依賴的Flask

    從輸入檔生成一組釘選的依賴項:

    uv pip compile pyproject.toml -o requirements.txt # 讀取pyproject.toml檔
    uv pip compile requirements.in -o requirements.txt # 讀取requirements.in檔

    與虛擬環境同步一組釘選的依賴項:

    uv pip sync requirements.txt # 從requirements.txt檔安裝

    高級使用

    Python發現

    uv不依賴Python,但需要定位Python環境來安裝依賴和構建源分發。執行 pip sync pip install 時,uv會按下面的順序搜尋虛擬環境:

    1. 基於 VIRTUAL_ENV 環境變量啟用的虛擬環境。

    2. 基於 CONDA_PREFIX 環境變量啟用的Conda環境。

    3. 當前目錄或最近父目錄的 .venv 中的虛擬環境。

    如果找不到虛擬環境,uv將提示使用者在當前目錄透過 uv venv 建立一個。

    執行 pip compile 時,uv不需要虛擬環境,並將按以下順序搜尋Python直譯器:

    1. ...(與上面相同)...

    如果提供了版本號,如 --python-version=3.7 ,uv還會根據該版本號搜尋直譯器。

    安裝到任意Python環境

    由於uv不依賴Python,所以它甚至可以安裝到除自己之外的虛擬環境。例如,設定 VIRTUAL_ENV=/path/to/venv 會導致uv安裝到指定路徑,無論uv安裝在哪裏。

    Git身份驗證和HTTP身份驗證

    uv支持從Git安裝包,同時支持SSH和帶密碼或token的私有倉庫。提供了用於HTTP認證的多種源。

    依賴項緩存及解析策略

    uv使用積極緩存策略避免重復下載和構建。例如,可以透過 uv pip install --refresh uv cache clean 清除緩存。預設情況下,uv傾向於安裝每個包的最新相容版本,也可以修改解析策略。

    平台與環境變量支持

    uv支持包括macOS(Apple Silicon和x86_64)、Linux(x86_64)以及Windows(x86_64)在內的第一層平台。對於環境變量,可以設定如 SSL_CERT_FILE RUST_LOG 等。

    文章精選

    「Rust

    關註公眾號並回復 「uv」 立即獲取計畫地址。