第四篇:使用uv构建和发布包

B站影视 韩国电影 2025-05-24 05:45 2

摘要:现在,假设你的cat 项目已经打磨完善,准备发布新版本。你还可以使用 uv 将项目构建并发布到像 PyPI 这样的包仓库。首先,你需要在 project.toml 文件中设置一些最终选项。接下来,你可以构建分发版本。你将在接下来的部分中了解这两个主题。

现在,假设你的cat 项目已经打磨完善,准备发布新版本。你还可以使用 uv 将项目构建并发布到像 PyPI 这样的包仓库。首先,你需要在 project.toml 文件中设置一些最终选项。接下来,你可以构建分发版本。你将在接下来的部分中了解这两个主题。

你的cat 应用程序有一个命令行界面(CLI),因此你需要明确设置项目的入口脚本,以便构建系统能够正确设置应用程序的可执行文件。打开 pyproject.toml 文件并添加以下内容:

[project]name = "rpcats"version = "0.1.0"description = "显示指定品种的猫的信息。"readme = "README.md"requires-python = ">=3.13"dependencies = [ "requests>=2.32.3",][dependency-groups]dev = [ "pytest>=8.3.5",][project.scripts]rpcats = "main:main"

通过添加这两行,你确保了当有人安装你的应用程序时,他们可以从终端运行 rpcats 命令来执行存储在 main.py 文件中的 main 函数。

接下来,你需要定义一个构建系统。

在本教程中,你将使用 Setuptools 作为构建系统。继续在 pyproject.toml 文件的末尾添加以下行:

[build-system]requires = ["setuptools>=78.1.0", "wheel>=0.45.1"]build-backend = "setuptools.build_meta"

第一行显示的内容指定构建系统将需要 setuptools 和 wheel。第二行显示的内容定义了构建后端。通过在 project.toml 文件中添加这两行,你就可以为应用程序构建分发版本了。

你可以使用 uv build 命令为你的 Python 项目构建源代码和二进制分发版本。默认情况下,uv build 会将项目构建并将分发版本放置在项目根目录下的 dist/ 子目录中:

uv build$ uv buildBuilding source distribution...running egg_infocreating rpcats.egg-info...Successfully built dist/rpcats-0.1.0.tar.gzSuccessfully built dist/rpcats-0.1.0-py3-none-any.whl

当你输入 uv build 命令并按下 Enter 键时,构建过程开始。你会在终端屏幕上看到详细的输出。在输出的最后,你会收到一条消息,告知包已成功构建。

你还有以下构建选项:

uv build --sdistuv build --wheel

第一个命令仅构建 源代码分发版本,而第二个命令仅构建 二进制分发版本。请注意,使用 uv build 而不带任何标志会同时构建源代码和二进制分发版本。

最后一步是将构建好的包发布到像 PyPI 这样的包仓库,以便你的用户可以在他们的系统上下载并安装它。

在将包 发布到 PyPI 之前,你应该确保一切正常运行。为此,你可以将包发布到 TestPyPI 索引,这是一个用于测试目的的特殊仓库。

你需要在 TestPyPI 上 注册一个账户 并生成一个 API 令牌。完成这些操作后,你可以手动编辑你的 pyproject.toml 文件,添加内容如下所示:

[[tool.uv.index]]name = "testpypi"url = "https://test.pypi.org/simple/"publish-url = "https://test.pypi.org/legacy/"explicit = true

通过这些添加,你设置了一个名为 testpypi 的自定义索引。你还必须将 name 键更改为一个在 TestPyPI 中不存在的独特名称。否则,你将无法上传包,因为名称已经存在。

现在,你可以使用 uv publish 命令和 --index 选项将应用程序上传到 TestPyPI:

$ uv publish --index testpypi --token your_token_here

运行此命令时,你需要在 --token 选项后面添加你的个人 TestPyPI API 令牌。输入所有信息后,按下 Enter 键将应用程序上传到 TestPyPI。应该就完成了!

要尝试该应用程序,你将在硬盘上的另一个目录中创建一个新的虚拟环境。因此,继续在硬盘上的任何其他目录中打开一个终端窗口。然后,运行以下命令:

$ uv venvUsing CPython 3.13.2Creating virtual environment at: .venvActivate with: source .venv/bin/activate$ uv pip install -i https://test.pypi.org/simple/ rpcats × No solution found when resolving dependencies: ╰─▶ Because only requests==2.5.4.1 is available and rpcats==0.1.0 depends on requests>=2.32.3, we can conclude that rpcats==0.1.0 cannot be used. And because only rpcats==0.1.0 is available and you require rpcats, we can conclude that your requirements are unsatisfiable.

使用 uv venv 命令,你可以在工作目录下的 .venv 文件夹中创建一个新的虚拟环境。

接下来,你尝试使用 uv pip 的 -i 选项从 TestPyPI 安装 rpcats。由于 uv 正在尝试安装一个大于或等于 2.32.3 的 requests 版本(正如你的依赖项所声明的那样),但 TestPyPI 上的最新 requests 版本是 2.5.4.1,无法满足你的需求,因此安装失败。

为了解决这个问题,你可以先从 PyPI 安装 requests,然后再像之前一样安装 rpcats:

$ uv pip install requests$ uv pip install -i https://test.pypi.org/simple/ rpcats$ uv run rpcats PersianPersianOrigin: Iran (Persia)Temperament: Affectionate, Loyal, Sedate, QuietLife Span: 14 - 15 yearsWeight: 9 - 14 lbsLearn more: https://en.wikipedia.org/wiki/Persian_(cat)

在这里,你手动从 PyPI 安装了 Requests。接下来,你像之前一样从 TestPyPI 安装 rpcats。最后,你使用 uv run 命令运行 rpcats,以确保它能够正常工作。请注意,你运行的是 rpcats 命令,而不是直接运行 main.py。

一旦你确认项目运行正常,你就可以将其上传到 PyPI 的主索引中。同样,你需要拥有一个 PyPI 账户 和一个 API 令牌。

注意:为了保持 PyPI 的清洁,你不应该将 rpcats 上传到索引中。请记住,这只是一个用于学习目的的示例项目,而不是一个功能完备的应用程序。

当你准备好后,运行以下命令来发布你的包:

$ uv publish --token your_token_here

此命令默认使用 PyPI 作为包索引。与 TestPyPI 一样,你需要输入你的 API 令牌。命令完成后,你的应用程序将出现在 PyPI 上,你可以像安装其他 Python 包一样安装它。

四、总结

你已经了解了 uv,这是一个基于 Rust 的快速 Python 包和项目管理器。你探索了它的功能,包括创建项目、设置虚拟环境、管理依赖项、构建和发布项目等。

有效地管理 Python 项目对于任何 Python 开发者来说都至关重要。有了 uv,你拥有一个“一站式”解决方案,可以加速你的工作流程并简化项目管理,使其成为初学者和经验丰富的开发者的无价工具。

在你的操作系统上安装 uv使用 uv 创建和管理 Python 项目使用 uv 命令高效处理 依赖项构建和发布 Python 包到 PyPI 或私有索引在 uv 中设置 开发工具,以实现更流畅的工作流程

凭借这些技能,你将能够更高效地管理你的 Python 项目,确保开发和部署过程顺利进行。你可以使用 uv 来处理项目依赖项、自动化环境设置,并改善开发团队之间的协作。

来源:软件架构

相关推荐