当前位置: 欣欣网 > 码农

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」 立即获取项目地址。