Python的发展与包管理工具的进步紧密相关,从手动安装到使用诸如pip
和poetry
这样的工具。然而,随着项目的复杂性增加,传统的工具在速度和效率上往往捉襟见肘。
uv 是一个用 Rust 编写的前沿 Python 包和项目管理器,旨在改变现状。uv 结合了诸如 pip
、poetry
和 virtualenv
等工具的功能,简化了依赖管理、脚本执行和项目构建等任务,且性能卓越。uv 与 pip
命令无缝兼容,无需额外的学习成本。
在本教程中,我们将探索如何安装uv并充分利用其功能。从创建项目和管理依赖项,到运行脚本,再到利用其改进的pip界面。
开始吧 目录- pip 限制
- uv 是什么
- uv 的关键特性
- 基准测试
- 安装指南
- 创建虚拟环境
- 用 uv 构建 Flask 应用
- 用 uv 安装 Python
- 工具
- 速查表
- 当前的局限
Pip 是一个广泛使用的 Python 包管理器,用于安装和管理软件包。然而,尽管它很流行,它经常因为是 Python 包管理工具中速度最慢的之一而受到批评。这种抱怨非常普遍,以至于经常出现在开发者的论坛和讨论区中。
pip的一个主要问题是它容易因依赖项配置问题而出现问题,这发生在依赖项配置文件编写或维护不当的情况下。这可能导致项目的复杂性增加和可维护性降低。
另一个 pip 的限制是它在恢复运行时环境时无法一致准确地匹配 Python 代码。这样的不匹配会导致依赖项推断的成功率不高,使得可靠地重新创建项目环境变得困难。
什么是UVuv 是一个现代且高性能的 Python 包管理器,由 ruff 的开发者用 Rust 语言开发。它是 pip
和 pip-tools
的替代品,提供了卓越的速度和与现有工具的良好兼容性。
主要功能包括支持可编辑安装、Git 和 URL 依赖项、约束文件(constraint files)、自定义索引等。uv 的标准虚拟环境可以与其它工具无缝协作,避免锁定或需要定制。它支持跨平台,包括 Linux、Windows 和 macOS,并且已经全面测试过与 PyPI 指标兼容。
专注于简洁性、快速和稳定,uv 针对常见的开发者痛点,如安装缓慢、版本间的冲突和复杂的依赖关系管理,提供了解决方案,为现代 Python 开发提供了一个直观且易于使用的解决方案。
uv的特点- ⚖️ 无缝替换:无缝替换
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 的工作区管理。
uv — pip杀手工具还是另一个包管理器工具? (uv — pip杀手工具还是另一个包管理器工具?)
使用热缓存解决和安装依赖项,模拟重新创建虚拟环境或向现有项目添加新依赖项的过程。
uv,pip的替代品或者又一个包管理器(https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager/)
解决和安装(左侧为解决,右侧为安装)依赖项时,冷启动模拟在干净环境下的执行,而热缓存则加速这一过程。不使用缓存时,uv 比 pip
和 pip-tools
快 8–10 倍,而使用热缓存时,速度提升到 80–115 倍之快。
Uv — pip杀手工具还是又一个包管理工具](https://blog.kusho.ai/uv-pip-killer-or-yet-another-package-manager/)
创建一个虚拟环境,左边带有如 pip
和 setuptools
这样的种子包,右边则没有。(左边是带有种子包,右边是不带有种子包的虚拟环境)uv 大约比 python -m venv
快 80 倍,比 virtualenv
快 7 倍,并且完全不依赖于 Python。
- 安装 uv库 非常简单快捷。您可以选择单独下载安装包,或直接从 PyPI 下载并安装。
# 在 macOS 和 Linux 系统中。
curl -LsSf https://astral.sh/uv/install.sh | sh
# 在 Windows 系统中。
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 通过 pip 安装。
pip install uv
# 通过 pipx 安装。
pipx install uv
# 通过 Homebrew 安装。
brew install uv
# 通过 Pacman 安装。
pacman -S uv
- 在使用uv之前,我们必须将uv路径添加到环境变量。
- 如果是Linux或macOS系统,请使用以下命令在终端中修改
PATH
环境变量:
export PATH="$HOME/.local/bin:$PATH"
这行命令用于将$HOME/.local/bin添加到PATH环境变量中。
- 对于 Windows, 若要将目录添加到 Windows 的 PATH 环境变量(既可以在用户级别也可以在系统级别),请在搜索面板中输入“环境变量”。在“用户变量”或“系统变量”部分,点击“编辑”,然后单击“新建”,输入所需的路径。
%USERPROFILE%\.local\bin
用户个人文件夹下的.local\bin路径
- 安装完成后,在终端中输入
uv
命令来确认安装正确。
使用 uv 创建虚拟环境非常简单。你可以使用以下命令并加上你想要的环境名称来创建它:命令 环境名称。
uv venv
(安装或激活虚拟环境的命令)
运行下面这个命令来激活虚拟环境。
# 在 macOS 和 Linux 系统上,可以这样做:
在命令行中运行 source .venv/bin/activate
# 在 Windows 系统上,可以这样做:
在命令行中运行 .venv\Scripts\activate
在虚拟环境中安装包是一个熟悉的过程。各种安装方法如下。
uv pip install flask # 安装 Flask。
uv pip install -r requirements.txt # 从 requirements.txt 文件安装依赖项。
uv pip install -e . # 以可编辑模式安装当前项目目录。
uv pip install "package @ ." # 从磁盘上的当前项目安装
uv pip install "flask[dotenv]" # 安装 Flask 并包含 'dotenv' 选项。
要将锁定的依赖与虚拟环境保持同步,可以使用以下命令:
pip install -r requirements.txt # 从 requirements.txt 文件中安装依赖项。
uv 支持多种命令行参数,例如 -r requirements.txt
,-c constraints.txt
,-e .
,--index-url
等。
让我们用 uv 来探索一些与项目相关的命令。首先,初始化一个名为“sample-project”的Python项目。
uv init sample-project
导航到 sample-project
目录。uv 会用这些文件,比如 app.py
、requirements.txt
、README.md
等等,初始化这个项目。
使用 run
命令来运行示例 Python 文件。这个过程首先会创建虚拟环境目录,然后运行 Python 文件。
uv run hello.py
在您的项目中添加 Flask 作为依赖项。
uv 添加 Flask
创建一个 Flask 应用
创建一个新的,然后输入以下代码。
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
def hello_world():
return {"message": "你好,大家!"}, 200
if __name__ == '__main__':
app.run(debug=True)
运行应用
使用 uv run
命令来运行应用程序
运行: uv app.py
打开浏览器,或者使用像 curl
或 Postman 这样的工具发送一个 GET 请求。
使用 uv 来安装 Python 是可选的,就像这样,这与现有的 Python 安装无缝配合。不过,如果选择用 uv 安装 Python,只需执行一个简单的命令。
运行此命令来安装 Python 3.12: uv python install 3.12
这种方法通常更加方便和可靠,因为它避免了管理代码仓库或下载安装包的需要。只需执行命令,安装就绪。
工具可以使用 uv
命令来安装和使用 CLI 工具。例如,安装 huggingface_hub
工具以启用从 Hugging Face 仓库拉取和推送文件。
- 请使用以下命令来安装 huggingface_hub 使用 uv。
- 请使用以下命令使用 uv 来安装 huggingface_hub。
(Note: There is a slight redundancy in the suggestions, leading to two potential sentences. The second one is more streamlined and will be used.)
- 请使用以下命令使用 uv 来安装 huggingface_hub。
uv tool install huggingface_hub
- 下面的命令显示所有已安装的工具列表。
列出 uv 工具
这里有一个快速的快捷操作表,用于常见uv操作的快速参考:
虽然 uvp 提供了一个快速且高效的 Python 包管理解决方案,但它也有一些局限性:
- 部分兼容 pip: 虽然 uv 支持大部分的
pip
接口,但尚未涵盖全部功能集。其中一些差异出于设计考虑,而另一些则是因为 uv 仍处于早期开发阶段。如需了解详细信息,请参阅 pip 兼容性指南。 - 特定平台的 requirements.txt 文件: 类似于
pip-compile
,uv 生成特定平台的requirements.txt
文件。这与 Poetry 和 PDM 等工具生成的跨平台文件不同,它们会生成poetry.lock
和pdm.lock
文件。因此,uv 生成的requirements.txt
文件可能在不同平台和 Python 版本之间不具备良好的可移植性。
谢谢你看这篇!!
感谢 Gowri M Bhatt 的内容审阅。
如果你这篇文章让你喜欢,请点击下方的赞,并分享,帮助更多人发现它!
资源 uvAn 用 Rust 编写的 Python 包和项目管理器,极其快速。docs.astral.sh共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章