首页 >后端开发 >Python教程 >uv 简介:下一代 Python 包管理器

uv 简介:下一代 Python 包管理器

Patricia Arquette
Patricia Arquette原创
2024-12-19 06:34:26939浏览

Python 的发展与包管理的进步密切相关,从手动安装到 pip 和 Poetry 等工具。然而,随着项目变得越来越复杂,传统工具往往在速度和效率上出现不足。

uv 是一个用 Rust 构建的尖端 Python 包和项目管理器,旨在改变这一现状。 uv 结合了 pip、poetry 和 virtualenv 等工具的功能,简化了依赖管理、脚本执行和项目构建等任务,所有这些都具有卓越的性能。它与 pip 命令无缝兼容,无需额外的学习曲线。

在本教程中,我们将探索如何安装 uv 并充分利用其功能。从设置项目和管理依赖项到运行脚本和利用其增强的 pip 界面。

入门

目录

  • 点限制
  • 什么是紫外线
  • 紫外线的主要特点
  • 基准
  • 安装
  • 创建虚拟环境
  • 使用 uv 构建 Flask 应用
  • 使用 uv 安装 python
  • 工具
  • 备忘单
  • 当前限制

点的限制

Pip 是一个广泛使用的用 Python 编写的包管理系统,旨在安装和管理软件包。然而,尽管它很受欢迎,但它经常被批评为最慢的 Python 包管理工具之一。关于“pip install 速度慢”的投诉非常常见,以至于经常出现在开发者论坛和主题中。

pip 的一个显着缺点是它容易受到依赖气味的影响,当依赖配置文件编写或维护不当时就会出现这种情况。这些问题可能会导致严重的后果,例如项目的复杂性增加和可维护性降低。

pip 的另一个限制是它在恢复运行时环境时无法一致地准确匹配 Python 代码。这种不匹配可能会导致依赖推断的成功率较低,从而使可靠地重新创建项目环境变得困难。

什么是紫外线

uv 是一个现代的、高性能的 Python 包管理器,由 ruff 的创建者开发并用 Rust 编写。它被设计为 pip 和 pip-tools 的直接替代品,提供卓越的速度以及与现有工具的兼容性。

主要功能包括支持可编辑安装、Git 和 URL 依赖项、约束文件、自定义索引等。 uv 符合标准的虚拟环境可与其他工具无缝协作,避免锁定或定制。它是跨平台的,支持 Linux、Windows 和 macOS,并且已经针对 PyPI 索引进行了广泛的测试。

uv 专注于简单性、速度和可靠性,解决了常见的开发人员痛点,如安装缓慢、版本冲突和复杂的依赖管理,为现代 Python 开发提供了直观的解决方案。

紫外线的主要特点

  • ⚖️ 直接替换:无缝替换 pip、pip-tools、virtualenv 等工具,完全兼容。
  • ⚡ 极速:比 pip、pip-compile 和 pip-sync 等传统工具快 10-100 倍。
  • ?磁盘空间效率高:利用全局缓存进行重复数据删除,节省存储空间。
  • ?灵活安装:可通过curl、pip或pipx安装,无需Rust或Python。
  • ?经过彻底测试:通过前 10,000 个 PyPI 包大规模验证性能。
  • ?️ 跨平台支持:完全兼容 macOS、Linux 和 Windows。
  • ?高级依赖管理:功能包括依赖版本覆盖、替代解决策略和冲突跟踪解析器。
  • ⁉️ 清除错误消息:一流的错误处理确保开发人员能够有效解决冲突。
  • ?现代 Python 功能:支持可编辑安装、Git 依赖项、直接 URL、本地依赖项、约束文件等。
  • ?统一工具:将 pip、pipx、poetry、pyenv、twine 等工具的功能组合到一个解决方案中。
  • ?️ 应用程序和脚本管理:安装和管理 Python 版本,使用内联依赖元数据运行脚本,并支持全面的项目工作流程。
  • ?️ 通用锁定文件:通过一致且可移植的锁定文件简化项目管理。
  • ?工作区支持:通过 Cargo 式工作区管理处理可扩展项目。

基准测试

Introducing uv: Next-Gen Python Package Manager
来源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用热缓存解析(左)和安装(右)依赖项,模拟重新创建虚拟环境或向现有项目添加新依赖项的过程。

Introducing uv: Next-Gen Python Package Manager
来源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用冷缓存解析(左)和安装(右)依赖项模拟干净环境中的执行。在没有缓存的情况下,uv 比 pip 和 pip-tools 快 8-10 倍,而在使用热缓存的情况下,它的速度可以快 80-115 倍。

Introducing uv: Next-Gen Python Package Manager
来源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用(左)和不使用(右)种子包(例如 pip 和 setuptools)创建虚拟环境。 uv 比 python -m venv 快大约 80 倍,比 virtualenv 快 7 倍,同时独立于 Python 运行。

安装

安装 uv 快速而简单。您可以选择独立安装程序或直接从 PyPI 安装。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

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

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

在使用uv之前,我们必须将uv路径添加到环境变量中。
对于 Linux 和 macOS,请在终端中使用以下命令修改 PATH 环境变量:

export PATH="$HOME/.local/bin:$PATH"

对于 Windows,要将目录添加到 Windows 上的用户和系统的 PATH 环境变量中,请在搜索面板中搜索环境变量。在“用户变量”/“系统变量”下,选择“路径”变量,单击“编辑”,然后单击“新建”并添加所需的路径。

%USERPROFILE%\.local\bin

Introducing uv: Next-Gen Python Package Manager
安装完成后,在终端运行uv命令,验证是否安装正确。

Introducing uv: Next-Gen Python Package Manager

创建虚拟环境

使用 uv 创建虚拟环境简单明了。使用以下命令以及您所需的环境名称来创建它。

uv venv
  • 运行以下命令激活虚拟环境。
# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

安装软件包

将软件包安装到虚拟环境中遵循熟悉的过程。下面给出各种安装方法

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

要将锁定的依赖项与虚拟环境同步,请使用以下命令:

uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

uv 支持与现有工具类似的各种命令行参数,包括 -rrequirements.txt、-cconstraints.txt、-e .、--index-url 等。

使用 uv 构建烧瓶应用程序

让我们用 uv 探索一些与项目相关的命令。首先初始化一个名为“sample-project”的 Python 项目。

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

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

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

导航到示例项目目录。 uv 使用 app.py、requirements.txt、README.md 等基本文件初始化项目。

Introducing uv: Next-Gen Python Package Manager

使用run命令执行示例Python文件。此过程首先创建虚拟环境文件夹,然后运行 ​​Python 文件。

export PATH="$HOME/.local/bin:$PATH"

Introducing uv: Next-Gen Python Package Manager

安装烧瓶

将 Flask 添加到您的项目依赖项中。

%USERPROFILE%\.local\bin

创建 Flask 应用程序

新建一个并编写以下代码。

uv venv

运行应用程序

使用 uv run 命令来执行应用程序。

# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

打开浏览器或使用curl或Postman等工具发送GET请求。

Introducing uv: Next-Gen Python Package Manager
Introducing uv: Next-Gen Python Package Manager

使用 uv 安装 python

使用 uv 安装 Python 是可选的,因为它可以与现有的 Python 安装无缝协作。但是,如果首选通过 uv 安装 Python,则可以使用简单的命令来完成:

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install current project in editable mode.
uv pip install "package @ ."        # Install current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

Introducing uv: Next-Gen Python Package Manager

与传统方法相比,这种方法通常更方便、更可靠,因为它避免了管理存储库或下载安装程序的需要。只需执行命令,设置即可使用。

工具

CLI 工具可以通过 uv 命令安装和使用。例如,可以安装 Huggingface_hub 工具来将文件拉取和推送到 Hugging Face 存储库。

  • 使用以下命令使用uv安装huggingface_hub。
uv pip sync requirements.txt  # Install dependencies from a requirements.txt file.

Introducing uv: Next-Gen Python Package Manager

  • 以下命令显示所有已安装的工具:
uv init sample-project

Introducing uv: Next-Gen Python Package Manager

备忘单

这是使用 uv 执行常见操作的快速备忘单:

Introducing uv: Next-Gen Python Package Manager

目前的限制

尽管 uv 为 Python 包管理提供了快速高效的解决方案,但它也有一些局限性:

  • 不完整的 pip 兼容性:虽然 uv 支持 pip 接口的很大一部分,但它尚未覆盖整个功能集。其中一些差异是有意的设计选择,而另一些则源于紫外线仍处于发展的早期阶段。如需详细比较,请参阅 pip 兼容性指南。
  • 平台特定的requirements.txt:与pip-compile一样,uv生成特定于平台的requirements.txt文件。这与 Poetry 和 PDM 等工具形成对比,后者创建与平台无关的 Poetry.lock 和 pdm.lock 文件。因此,uv 的requirements.txt 文件可能缺乏跨不同平台和Python 版本的可移植性。

感谢您阅读这篇文章!!

感谢 Gowri M Bhatt 审阅内容。

如果您喜欢这篇文章,请点击心形按钮♥并分享以帮助其他人找到它!

资源

uv - 一个非常快的 Python 包和项目管理器,用 Rust 编写 | docs.astral.sh

以上是uv 简介:下一代 Python 包管理器的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn