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共同學習,寫下你的評論
評論加載中...
作者其他優質文章




















