uv入门:下一代 Python 包管理器
Python 的发展与包管理的进步密切相关,从手动安装到像 pip 和 poetry 这样的工具。然而,随着项目复杂度的增加,传统工具在速度和效率方面常常力不从心。
uv 是一款前沿的 Python 包和项目管理器,用 Rust 编写而成,旨在改变这一现状。它集成了 pip、poetry 和 virtualenv 等工具的功能,能够高效地处理依赖管理、脚本执行和项目构建等任务,同时提供卓越的性能。它与 pip 命令无缝兼容,无需额外的学习曲线。
在本教程中,我们将探索如何安装 uv 并充分利用其功能。从设置项目和管理依赖关系,到运行脚本并利用其增强的 pip 接口。
一、pip 的局限性
pip 是一种广泛使用的 Python 包管理系统,用于安装和管理软件包。然而,尽管它很受欢迎,但常常被批评为 Python 中最慢的包管理工具之一。关于“pip install 太慢”的抱怨在开发者论坛和讨论中屡见不鲜。
pip 的另一个重大缺陷是对依赖关系配置文件的敏感性。如果这些文件编写或维护不当,可能会导致依赖关系“异味”,从而增加项目的复杂性并降低可维护性。
此外,pip 在恢复运行时环境时无法始终准确匹配 Python 代码。这种不匹配可能导致依赖关系推断的成功率较低,难以可靠地重建项目环境。
二、什么是 uv
uv 是一款由 ruff 的开发者创建的现代高性能 Python 包管理器,用 Rust 编写而成。它被设计为 pip 和 pip-tools 的直接替代品,提供卓越的速度和与现有工具的兼容性。
uv 的关键特性包括支持可编辑安装、Git 和 URL 依赖关系、约束文件、自定义索引等。它的标准兼容虚拟环境可以与其他工具无缝协作,避免了锁定或定制化问题。uv 是跨平台的,支持 Linux、Windows 和 macOS,并且已经针对 PyPI 索引进行了广泛测试。
uv 专注于简单性、速度和可靠性,解决了开发者常见的痛点,如安装速度慢、版本冲突和复杂的依赖关系管理,为现代 Python 开发提供了一个直观的解决方案。
三、uv安装
安装 uv 非常快速且简单。您可以选择独立安装程序,也可以直接从 PyPI 安装。
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
pip install uv
pipx install uv
brew install uv
pacman -S uv
在使用 uv 之前,我们需要将 uv 路径添加到环境变量中。
对于 Linux 和 macOS,通过以下命令修改 PATH 环境变量:
export PATH="$HOME/.local/bin:$PATH"
对于 Windows,要将目录添加到用户和系统的 PATH 环境变量中,请在搜索栏中搜索“环境变量”。在用户变量 / 系统变量下,选择 Path 变量,点击编辑,然后点击新建并添加所需路径。
%USERPROFILE%\.local\bin
安装完成后,在终端运行 uv 命令以验证是否安装正确。
比如, uv -V 查看版本。
四、创建虚拟环境
每个 Python 安装版本都有一个在使用 Python 时激活的环境。可以将包安装到环境中,以便在 Python 脚本中使用其模块。通常,不建议修改 Python 安装的环境,尤其是操作系统自带的 Python 安装,因为它们通常会自行管理这些包。虚拟环境是一种轻量级的方法,可以将包与 Python 安装的环境隔离。与 pip 不同,uv 默认要求使用虚拟环境。
使用 uv 创建虚拟环境非常简单。使用以下命令以及您希望的环境名称来创建。
uv venv
运行以下命令激活虚拟环境。
# On macOS and Linux.
source .venv/bin/activate
# On Windows.
.venv\Scripts\activate
可以指定特定的名称或路径,例如,在 my-name 创建虚拟环境:
uv venv my-name
输出:Using CPython 3.13.3
Creating virtual environment at: my-name
Activate with: source my-name/bin/activate
还可以指定 Python 版本,例如,创建一个使用 Python 3.11 的虚拟环境:
uv venv --python 3.11
请注意,这需要系统上已安装了所请求的 Python 版本。如果未安装,uv 将会为你下载 Python。
五、安装包
在虚拟环境中安装包的过程非常熟悉。以下是各种安装方法:
uv pip install flask
uv pip install -r requirements.txt
uv pip install -e .
uv pip install "package @"
uv pip install "flask[dotenv]"
六、使用 uv 构建 Flask 应用
让我们通过 uv 探索一些与项目相关的命令。首先,初始化一个名为“sample-project”的 Python 项目。
uv init sample-project
进入 sample-project 目录。uv 会初始化项目,并生成一些基本文件,如 main.py、pyproject.toml、README.md 等。
项目主要包含两个关键文件:
- pyproject.toml - 项目配置文件,定义了项目元数据和依赖要求
- main.py - 包含主程序入口点
使用 run 命令运行示例 Python 文件。此过程会首先创建虚拟环境文件夹,然后运行 Python 文件。
uv run main.py
输出:
Using CPython 3.13.3
Creating virtual environment at: .venv
Hello from sample-project!
使用 uv 安装 Python 是可选的,因为 uv 与现有的 Python 安装完全兼容。然而,如果希望通过 uv 安装 Python,可以通过以下简单命令完成:
uv python install 3.13.3
这种方法通常比传统方法更方便、更可靠,因为它无需管理仓库或下载安装程序。只需执行命令,即可完成设置并立即使用。
七、工具
可以通过 uv 命令安装和使用 CLI 工具。例如,可以安装 huggingface_hub 工具,以便从 Hugging Face 仓库拉取和推送文件。
使用以下命令通过 uv 安装 huggingface_hub:
uv tool install huggingface_hub
显示所有已安装的工具:
uv tool list
以下是一些使用 uv 进行常见操作的速查表: