uv - 新的 Python 包、项目和环境管理工具

Python uv 的优点

目录

Python uv(发音为“you-vee”)是一个现代、高性能的 Python 包和项目管理工具,使用 Rust 编写。它被设计为传统 Python 包管理工具(如 pippip-toolsvirtualenvpipxpyenv)的即插即用替代品,旨在简化并加速 Python 开发工作流程。

uv 由 Astral 团队开发,该团队也是流行的 Python 代码检查工具 Ruff 的开发者。uv 的设计旨在解决 Python 生态系统中的常见痛点,例如安装速度慢、依赖冲突和复杂的环境管理,通过利用 Rust 的性能和现代软件架构来实现。

uv python ultra-violet spa

uv 的主要功能

  • 卓越的速度:uv 比传统工具快得多,通常在没有缓存的情况下比 pip 快 8–10 倍,使用热缓存时可快达 80–115 倍。
  • 一体化工具:将包安装、依赖解析、虚拟环境管理、Python 版本管理、项目搭建和脚本执行集成到一个工具中。
  • 兼容性:提供与 pip 兼容的命令行界面,使其易于采用,无需陡峭的学习曲线。
  • 强大的依赖管理:提供精确的依赖解析和锁文件支持,以实现可重复的环境。
  • 自动虚拟环境:自动创建和管理虚拟环境,减少手动设置。
  • 跨平台支持:可在 macOS、Linux 和 Windows 上运行。
  • 独立安装:无需 Python 或 Rust 即可安装,使用简单的安装程序或 curl

uv vs poetry vs pdm vs pip performance comparison

仍然不确定为什么使用 uv?

  • 性能:显著减少包安装和依赖解析时间。
  • 简洁性:将多个工具统一为一个,简化项目设置和管理。
  • 可靠性:提供一致、可重复的环境,配有清晰的错误信息和冲突解决。
  • 现代标准:支持 pyproject.toml 进行项目配置,与当前 Python 打包标准保持一致。

示例使用场景

让我们尝试一些令人兴奋的事情!

  • 启动一个新项目
uv init myproject
cd myproject
uv add requests
uv run python script.py

这将创建一个项目目录,设置虚拟环境,安装依赖项,并在隔离环境中运行脚本。

  • 管理带有内联依赖的脚本
uv add --script script.py requests
uv run script.py

uv 可以管理单文件脚本的依赖项,而无需单独的 requirements 文件。

与传统工具的比较

功能 uv pip/virtualenv Poetry
速度 非常快 中等
虚拟环境 自动 手动 自动
依赖解析 高级 基础 高级
Python 版本管理 否(需要 pyenv)
锁文件支持 否(需要 pip-tools)
脚本执行 集成 有限

如何在系统上安装并开始使用 UV

要在系统上安装并开始使用 uv,请按照以下简单步骤操作:

安装

  1. 独立安装程序(推荐)
    • Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh

或者,如果您更喜欢使用 wget

wget -qO- https://astral.sh/uv/install.sh | sh
  • Windows(PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  • 特定版本:您可以通过在 URL 中包含特定版本来请求特定版本,例如 https://astral.sh/uv/0.7.15/install.sh
  1. 替代方案:通过 pip 安装(如果您已安装 Python)
pip install uv

注意:除非您清楚自己在做什么,否则不建议使用此方法进行系统范围的安装,因为它可能会使您的系统 Python 环境变得杂乱。

  1. 通过 pipx 安装(用于独立、用户范围的安装)
pipx install uv

如果已经使用 pipx,此方法对于全局访问更干净。

入门

检查安装 - 运行:

uv

您应该看到一个帮助菜单,确认 uv 已安装并准备就绪。

创建并激活虚拟环境

  • 创建 venv:
uv venv test
  • 在 Linux/macOS 上激活:
source test/bin/activate
  • 在 Windows 上激活:
.\test\Scripts\activate

现在您可以使用 uv pip install 在此环境中安装包。

初始化新项目

uv init

这将为您的项目创建 pyproject.toml.gitignore

添加依赖项

添加一个包:

uv add

这将更新 pyproject.toml 并生成/更新锁文件。

同步依赖项

在您的环境中安装所有依赖项:

uv sync

或者,使用 pip 兼容接口:

uv pip install

这确保所有依赖项根据您的锁文件安装。

运行脚本

使用:

uv run script.py

这将自动管理脚本的环境和依赖项。

Shell 集成(可选)

为了更流畅的工作流程,您可以将 shell 集成添加到您的 .zshrc.bashrc 中,以自动激活默认虚拟环境并将 pip 别名为 uv pip

通过这些步骤,您将安装好 uv,并准备好以快速和简便的方式管理 Python 项目。

安装特定 Python 版本

您可以使用 uv 来安装特定的 Python 版本,并在项目中管理它们。

  • 安装最新的稳定 Python 版本:
    uv python install
    
    此命令下载并安装最新的稳定 Python 版本。
  • 安装特定版本:
    uv python install 3.12
    
    这将安装 Python 3.12 的最新补丁版本(例如 3.12.3)。
  • 安装确切的补丁版本:
    uv python install 3.12.3
    
    这将安装确切的 Python 3.12.3。
  • 安装多个版本:
    uv python install 3.9 3.10 3.11
    
    这将安装 Python 3.9、3.10 和 3.11。
  • 安装满足约束的版本:
    uv python install '>=3.8,=3.11"
    
    这将更改项目的 Python 版本要求。

其他注意事项

自动下载:默认情况下,如果系统中未找到 Python 版本,uv 将自动下载并安装所需的 Python 版本。

系统 Python:如果存在,uv 可以使用现有的 Python 安装,或者您可以使用 --no-managed-python 标志强制其使用系统 Python。

升级:您可以使用以下命令将 uv 管理的 Python 版本升级到最新的补丁版本:

uv python upgrade 3.12

或者升级所有已安装的版本:

uv python upgrade

不支持跨小版本(例如从 3.12 升级到 3.13)的升级。

总之,uv 提供了灵活且强大的工具,用于在您的项目中安装、管理和使用特定的 Python 版本。

UV 如何在不同系统上发现可用的 Python 解释器

UV 通过检查一组明确定义的位置并在每个候选对象上查询其版本元数据,来发现不同系统上可用的 Python 解释器。以下是其工作方式:

  • 管理的 Python 安装:
    UV 首先查看由 UV_PYTHON_INSTALL_DIR 环境变量指定的目录,该目录存储其自己的管理 Python 版本。
  • 系统 PATH:
    在 macOS 和 Linux 上,UV 检查系统 PATH 中列出的目录中的名为 pythonpython3python3.x(其中 x 是版本号)的可执行文件。在 Windows 上,它查找 python.exe
  • Windows 特定位置:
    在 Windows 上,UV 还会检查 Windows 注册表和 Microsoft Store Python 解释器,使用 py --list-paths 的输出。
  • 虚拟环境:
    如果激活了虚拟环境或指定了虚拟环境,UV 会在检查其他位置之前检查该环境中的解释器是否兼容。
  • 元数据查询:
    每个发现的可执行文件都会被查询其版本元数据。只有与请求的版本(或版本约束)匹配的可执行文件才会被考虑。非可执行文件会被忽略。
  • 偏好和回退:
    默认情况下,UV 偏好系统 Python 安装,但您可以使用选项来调整,以优先使用管理的或仅使用管理的/系统版本。如果没有找到合适的解释器,UV 可以下载并安装所需的版本。

这种强大的发现过程确保 UV 可以在不同操作系统和环境中可靠地定位并使用正确的 Python 解释器。

有用的链接