uv 简介:下一代 Python 包管理器
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 式工作区管理处理可扩展项目。
基准测试
来源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用热缓存解析(左)和安装(右)依赖项,模拟重新创建虚拟环境或向现有项目添加新依赖项的过程。
来源:https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager
使用冷缓存解析(左)和安装(右)依赖项模拟干净环境中的执行。在没有缓存的情况下,uv 比 pip 和 pip-tools 快 8-10 倍,而在使用热缓存的情况下,它的速度可以快 80-115 倍。
来源: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
在使用uv之前,我们必须将uv路径添加到环境变量中。
对于 Linux 和 macOS,请在终端中使用以下命令修改 PATH 环境变量:
export PATH="$HOME/.local/bin:$PATH"
对于 Windows,要将目录添加到 Windows 上的用户和系统的 PATH 环境变量中,请在搜索面板中搜索环境变量。在“用户变量”/“系统变量”下,选择“路径”变量,单击“编辑”,然后单击“新建”并添加所需的路径。
%USERPROFILE%\.local\bin
安装完成后,在终端运行uv命令,验证是否安装正确。
创建虚拟环境
使用 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.
要将锁定的依赖项与虚拟环境同步,请使用以下命令:
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 等基本文件初始化项目。
使用run命令执行示例Python文件。此过程首先创建虚拟环境文件夹,然后运行 Python 文件。
export PATH="$HOME/.local/bin:$PATH"
安装烧瓶
将 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请求。
使用 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.
与传统方法相比,这种方法通常更方便、更可靠,因为它避免了管理存储库或下载安装程序的需要。只需执行命令,设置即可使用。
工具
CLI 工具可以通过 uv 命令安装和使用。例如,可以安装 Huggingface_hub 工具来将文件拉取和推送到 Hugging Face 存储库。
- 使用以下命令使用uv安装huggingface_hub。
uv pip sync requirements.txt # Install dependencies from a requirements.txt file.
- 以下命令显示所有已安装的工具:
uv init sample-project
备忘单
这是使用 uv 执行常见操作的快速备忘单:
目前的限制
尽管 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
