如何在 Ubuntu 22.04 上使用 Poetry 将 Python 包发布到 PyPI
介绍
PyPI 是用于上传和下载 Python 包的官方 Python 存储库,将在本教程中使用。它是 Python 包的官方第三方源,由 Python 软件基金会运营。在 PyPI 上发布您的包可以使其公开供您自己或其他任何人安装。
在本教程中,您将创建一个 PyPI 帐户,使用您的帐户设置令牌身份验证以启用与 Poetry 的使用,然后构建并将打包的项目发布到 PyPI 上。这也将使您能够将已发布的包添加为其他 Python 项目的依赖项。
先决条件
- 一台 Ubuntu 22.04 服务器,根据我们的 Ubuntu 22.04 初始服务器设置指南进行设置,非根用户拥有
sudo
权限并启用了防火墙。 - 按照如何在 Ubuntu 22.04 服务器上安装 Python 3 和设置编程环境的第 1 步,在您的计算机上安装最新版本的 Python 3。
- 按照本指南将 Poetry 安装在您的系统上,以了解如何在 Ubuntu 22.04 上安装 Poetry 以管理 Python 依赖项。
第 1 步 — 创建 PyPI 帐户
为了将包发布到 PyPI,您需要创建一个帐户。在您的网络浏览器中转到官方注册页面:
接下来,您需要启用令牌身份验证,以便在 Poetry 中安全地使用您的 PyPI 凭据。
第 2 步 — 为 PyPI 启用令牌身份验证
令牌身份验证是在命令行中使用 PyPI 帐户的推荐方式。您可以使用单个自动生成的令牌代替用户名和密码。可以随时添加和撤销令牌,或授予对您帐户部分的精细访问权限。这使它们更加安全,并避免了密码被泄露的风险。您需要通过导航到您的帐户设置为您的帐户创建一个新的 API 令牌:
向下滚动,直到到达“API 令牌”部分。单击“添加 API 令牌”:
在下一页上,您可以命名您的代币。本教程将其命名为 poetry
,但您可以随意选择您喜欢的任何名称:
创建令牌后,复制令牌很重要,因为它只会显示一次。这是 API 令牌的常见做法,允许您根据需要创建一个新令牌,因此请在继续之前记下您的令牌。
您现在将使用此令牌在 Poetry 中配置您的凭据以准备发布。您无需将 API 令牌附加到 Poetry 中需要它的每个命令,而是使用 Poetry 的 config
命令执行一次。
使用以下命令将您的 API 令牌添加到 Poetry:
- poetry config pypi-token.pypi your-api-token
添加您的 API 令牌作为您的凭据后,Poetry 将通知您您的凭据存储在纯文本文件中。如果您使用传统的用户名和密码作为凭据,这将是一个问题。鉴于令牌可以轻松删除和更新,同时也是随机生成的并且对于单个用例是唯一的,这使得令牌存储在这里成为一种安全的权衡取舍。或者,您可以选择为每个命令手动输入 API 令牌。
有了这个,您就可以构建并发布您的项目了。
第 3 步 — 构建您的项目
构建与打包项目相同,这是发布项目之前的必要步骤。要构建您的项目,请输入以下内容:
poetry build
OutputBuilding sammy-poetry (0.1.0)
- Building sdist
- Built sammy-poetry-0.1.0.tar.gz
- Building wheel
- Built sammy_poetry-0.1.0-py3-none-any.whl
将输出两个文件。首先是源代码,它是 sdist
,输出到 tar.gz
文件。其次是编译包,它是 wheel
,输出到 .whl
文件。有了这些文件,您现在就可以将 Python 包发布到 PyPI 了。
第 4 步 — 将 Python 包发布到 PyPI
PyPI 是 Poetry 的默认发布目标。有了您的身份验证 API 令牌,您的发布命令将不需要再次包含您的凭据。
要发布已编译的包,请输入以下内容:
poetry publish
OutputPublishing sammy-poetry (0.1.0) to PyPI
- Uploading sammy-poetry-0.1.0.tar.gz 100%
- Uploading sammy_poetry-0.1.0-py3-none-any.whl 100%
您现在可以检查已发布的包。在浏览器中打开 PyPI 项目。
您的包已发布,可在 PyPI 上公开使用,也可通过 Poetry 作为依赖项使用。您可以将自己发布的包添加为其他 Python 项目中的依赖项。
注意:通过将以下标志添加到您的 publish
调用,您可以在一条命令中构建您的包并将其发布到 PyPI:
- poetry publish --build
根据您的项目和工作流的成熟度,这可能会更有效。
结论
在本教程中,您使用了 Poetry 的构建和发布功能。您创建了一个 PyPI 帐户,使用 Poetry 设置了 API 令牌身份验证,然后在发布之前编译了您的项目。您的包作为依赖项公开可用,甚至可以通过 Poetry 作为依赖项包含在内。
接下来,您可能想通过查看我们的如何使用 Python 编写代码教程系列来更深入地研究 Python。