第二篇:使用 uv 管理 Python 项目

360影视 动漫周边 2025-05-19 09:21 2

摘要:uv 工具是一个高速的 Python 包和项目管理器。它用 Rust 编写,旨在简化你的工作流程。它提供了快速的依赖项安装,并将多种功能集成到一个工具中。

uv 工具是一个高速的 Python 包和项目管理器。它用 Rust 编写,旨在简化你的工作流程。它提供了快速的依赖项安装,并将多种功能集成到一个工具中。

使用 uv,你可以安装和管理多个 Python 版本,创建虚拟环境,高效处理项目依赖项,重现工作环境,甚至构建和发布项目。这些功能使得 uv 成为管理 Python 项目的“一站式”工具。

在本教程结束时,你将明白:

uv 是一个 Python 包和项目管理器,它将多种功能集成到一个工具中,为管理 Python 项目提供了一个全面的解决方案。uv 用于快速依赖项安装,虚拟环境管理,Python 版本管理和项目初始化,提升生产力和效率。uv 可以构建和发布 Python 包到包仓库,例如 PyPI,支持从开发到分发的简化流程。uv 自动处理虚拟环境,根据需要创建和管理它们,以确保项目依赖项的清洁和隔离。

要深入学习如何使用 uv 高效管理 Python 项目,你应该具备使用 Python 虚拟环境的基本知识,了解如何为项目设置 pyproject.toml 文件,以及如何构建可分发的项目包。

在本教程中,你将探索另一个用 Rust 为 Python 制作的酷炫工具。你将了解 uv,这是一个极其快速的 Python 包和项目管理器。

此外,uv 将像 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等工具提供的大多数功能集成到一个工具中。因此,uv 是一个“一站式”解决方案。

以下是 uv 用于管理 Python 项目的关键功能列表:

快速依赖项安装:安装依赖项非常快,对于大型依赖树尤其有用。虚拟环境管理:自动创建和管理 虚拟环境(参考第一篇文章)。Python 版本管理:允许安装和管理多个 Python 版本(参考第一篇文章)。项目初始化:搭建完整的 Python 项目,包括根目录、Git 仓库、虚拟环境、pyproject.toml、README 等。依赖项管理:安装、更新、移除和锁定直接和 传递依赖项,允许环境可重现。包构建和发布管理:允许你将包构建并发布到像 Python Package Index (PyPI) 这样的包仓库。开发工具支持:安装并运行开发工具,例如 pytest、Black 和 Ruff。

除了这些功能外,uv 是一个独立的二进制文件,允许轻松安装和快速升级。你不需要在系统上安装 Python 就可以安装 uv。

因此,在对 uv 及其主要功能进行了这个简短的总结之后,你就可以在系统上安装这个工具了。这将在接下来的部分中完成。此外,你还将学习如何更新你的 uv 安装。

关于 uv的安装,可以参考第一篇文章。

正如你所知,时间过得很快。uv 项目目前正处于积极开发中,这意味着新版本会定期发布。

如果你使用的是 独立安装程序 安装的 uv,并且希望跟上最新版本,那么你可以运行以下命令:

uv self update

在macOS 中执行:

sudo uv self updatePassword:info: Checking for updates...success: Upgraded uv from v0.6.16 to v0.7.4! https://github.com/astral-sh/uv/releases/tag/0.7.4

检查版本:

uv --versionuv 0.7.4 (6fbcd09b5 2025-05-15)

uv self update 命令会检查是否有新版本可用。如果存在,该命令会为你下载新包并安装。

如果你使用的是 pipx 安装的 uv,并且希望升级它,那么你可以运行以下命令:

pipx upgrade uv

此命令允许你将 uv 安装升级到最新版本,前提是你使用的是 pipx。

现在来到了有趣的部分 —— 创建和管理 Python 项目的部分。在本节中,你将探索 uv 的功能和命令,这些功能和命令使你可以快速高效地完成这些操作。

创建 Python 项目

要使用 uv 创建并初始化 Python 项目,请导航到你希望存储项目的目录。到达后,你可以运行以下命令来创建并初始化项目:

uv init rpcats

请注意,项目名称由你决定。在本例中,你将使用 rpcats 来表示这是一个用于检索和显示猫信息的 Real Python 项目。

上述命令会在 rpcats/ 文件夹下创建以下目录结构:

这太棒了!首先,你有一个 .git/ 目录,它是项目的 Git 仓库。 .gitignore 文件允许你定义你希望在版本控制工作流中跳过的文件和文件夹。默认情况下,uv 会自动用大多数 Python 项目适用的合理条目填充此文件,确保不需要的文件不会被纳入版本控制。

.python-version 文件包含当前项目的默认 Python 版本。此文件告诉 uv 在为项目创建专用虚拟环境时应使用哪个 Python 版本。接下来,你有一个空的 README.md 文件,你可以用它为你的项目提供基本文档。

main.py 文件是一个占位符 Python 文件,最初包含以下代码:

def main: print("Hello from rpcats!")if __name__ == "__main__": main

在这个例子中,你有一个 main 函数,它会在屏幕上打印一条消息。在文件底部,你还会看到熟悉的 if __name__ == "__main__" 用法,这是这类可执行文件中的常见做法。

最后,你有一个带有以下初始内容的 pyproject.toml 文件:

[project]name = "rpcats"version = "0.1.0"description = "Add your description here"readme = "README.md"requires-python = ">=3.13"dependencies =

此文件在 [project] 下包含基本的配置键值对。你可以根据需要更新任何键的值。例如,你可以将 description 改为类似以下内容:

[project]name = "rpcats"version = "0.1.0"description = "显示指定品种的猫的信息。"readme = "README.md"requires-python = ">=3.13"dependencies =

现在,你的项目有了一个明确的描述。你还可以更改项目的版本、所需的 Python 版本等。

注意:如果你想使用 uv 开始管理一个现有的项目,那么请导航到项目的目录并运行以下命令:

uv init

此命令将为你创建 uv 项目的结构。如果你已经有一个 main.py 文件,它不会覆盖该文件,但如果缺少该文件,它会为你创建一个。它既不会修改你的 Git 仓库,也不会修改你的 README.md 文件。

然而,如果你已经有一个 pyproject.toml 文件,那么这个命令将无法工作。如果是这种情况,你可以将该文件移动到其他位置,然后运行 uv init 命令。最后,你可以将旧的 pyproject.toml 文件中的任何相关配置更新到新文件中。

就这样!你已经使用 uv 创建了你的第一个项目。现在你可以运行项目的入口脚本,即默认的 main.py,来检查一切是否正常运行。

运行项目的入口脚本

创建项目后,你可以使用 uv 运行入口脚本,即默认的 main.py 文件。要运行脚本,请执行以下命令:

uv run main.py

输出:Hello from rpcats!

首次运行此命令时,uv 为项目创建了一个专用的 Python 虚拟环境。最终输出行会显示调用 main.py 中定义的 main 函数的结果。

如果你再次检查项目的根目录内容,你会看到一个名为 .venv 的文件夹,其中包含项目的专用虚拟环境。

你还会看到一个名为 uv.lock 的新文件,这是一个跨平台的 锁定文件,其中包含有关项目依赖项的信息。此文件确保其他开发者可以快速且精确地重现你的工作环境,从而增强团队协作和代码贡献。

与 pyproject.toml(通常指定项目的直接依赖项)不同,uv.lock 文件包含在项目环境中安装的任何依赖项的确切版本。

uv.lock 文件使用 TOML 格式。你应该将此文件添加到版本控制中,但不应手动编辑它。相反,你可以让 uv 来管理它。你稍后会了解更多关于这个文件的内容。

来源:软件架构

相关推荐