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 进行常见操作的速查表:


#春日生活打卡季#

相关文章

深入理解pip:Python包管理的核心工具与实战指南

# 深入理解pip:Python包管理的核心工具与实战指南在Python开发中,第三方库是提升效率的关键。而`pip`作为Python官方的包管理工具,承担着安装、卸载、升级和管理库的重要职责。本文将...

【python】5分钟掌握pip(包管理)操作

安装一个软件包从庞大的仓库中找到一个库,将其导入您的环境:pip install numpy2. 已安装软件包列表调查您领域内存在的库的概要,注意它们的版本:pip list3. 升级软件包赋予已安装...

Python pip包管理工具使用指南

在Python中,使用pip进行包管理的步骤如下:1. 确认pip是否已安装检查安装:在终端运行以下命令,查看是否返回版本信息。bashpip --version# 或针对Python 3pip3 -...

【Python神器】uv工具深度解析:Python包管理界的“瑞士军刀”

【Python神器】uv工具深度解析:Python包管理界的“瑞士军刀”——为什么它让运维和开发集体上头?一、uv是什么?——Python生态的“全能选手”uv(全称 Universal Virtua...

uv:Python包管理的新宠,让开发更高效

在Python开发的世界里,包管理一直是一个关键环节。一个好的包管理工具不仅能提升开发效率,还能确保项目的稳定性和可维护性。今天,我们要介绍的是一个星标数高达46.9k的开源项目——uv。它以其高性能...