Ubuntu 22.04使用Poetry发布Python包到PyPI完整教程

引言

Poetry是一个用于Python的依赖管理器,它还能够构建和打包Python项目以供分发。PyPI是官方的Python包上传和下载仓库,在本教程中将使用它。它是Python包的官方第三方来源,由Python软件基金会运营。在PyPI上发布你的包使其公开可供自己或任何其他人安装。

在本教程中,你将创建一个PyPI帐户,通过设置令牌身份验证与你的帐户连接,以便在Poetry中使用。然后你将构建并发布你的打包项目到PyPI上。这还将使你能够将你发布的软件包作为其他Python项目的依赖项添加进去。

先决条件

  • 一台Ubuntu 22.04服务器,按照我们的Ubuntu 22.04初始服务器设置指南进行设置,包括一个具有sudo权限的非root用户和启用的防火墙。
  • 在你的机器上安装了最新版本的Python 3,遵循如何在Ubuntu 22.04服务器上安装Python 3并设置编程环境的第1步。
  • 在你的系统上安装了Poetry,遵循如何在Ubuntu 22.04上安装Poetry来管理Python依赖的指南。

第一步 – 创建一个 PyPI 账户

为了将软件包发布到PyPI,你需要创建一个账户。打开你的网络浏览器并访问官方注册页面。

PyPI注册页面

接下来,你需要启用令牌身份验证,以便在Poetry中安全使用你的PyPI凭证。

第二步 – 为PyPI启用令牌身份验证

在命令行中使用PyPI帐户的推荐方式是令牌验证。你可以使用单个自动生成的令牌代替用户名和密码。令牌可以随时添加、撤销或授予对帐户的特定访问权限。这使得令牌更加安全,并避免了密码被泄露的风险。你需要通过导航到帐户设置来为你的帐户创建一个新的API令牌。

PyPI账户设置

向下滚动直到你达到”API令牌”部分。点击”添加API令牌”。

PyPI添加API令牌

在接下来的页面上,你可以给你的令牌命名。本教程将其命名为”Poetry”,但你可以随意选择任何你喜欢的名字。

PyPI API令牌创建

一旦你的令牌创建成功,重要的是将其复制,因为令牌只会显示一次。这是使用允许你根据需要生成新令牌的API令牌常见做法,所以请在继续之前记下你的令牌。

PyPI复制警告

现在,你将使用此令牌在Poetry中配置你的凭据,以准备发布。不要再将API令牌附加到Poetry中所需的每个命令中,而是只需使用Poetry的config命令进行一次操作即可。

请使用以下命令将API令牌添加到Poetry中:

  1. poetry config pypi-token.pypi your-api-token

添加你的API令牌作为你的凭据后,Poetry将会通知你,你的凭据已存储在一个明文文件中。如果你在使用传统的用户名和密码作为凭据,则这可能会成为一个问题。鉴于令牌可以轻松删除和更新,同时令牌也是随机生成并且唯一对应于单个用例,这使得在此处存储令牌成为了方便的安全折衷。或者,你可以选择为每个命令手动输入你的API令牌。

有了这个,你就可以开始构建并发布你的项目了。

第三步 — 构建你的项目

构建项目就是打包项目,这是在发布前必须进行的步骤。要构建你的项目,请输入以下内容:

poetry build
输出
Building 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了。

第四步 – 将你的Python软件包发布到PyPI

PyPI是Poetry的默认发布目标。如果你的身份验证API令牌已经准备就绪,你的发布命令将无需再包含凭据。

要发布你已编译的软件包,请输入以下内容:

poetry publish
输出
Publishing 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你上传的软件包

你的软件包已发布,并已在PyPI上公开可用,同时也可以通过Poetry作为依赖项使用。你可以将自己发布的软件包添加为其他Python项目的依赖项。

注意

注意:你可以通过在发布命令中添加以下标记,一步完成构建和发布你的包到PyPI:
poetry publish --build
根据你的项目成熟度和工作流程,这样做可能更加高效。

结论

在这个教程中,你使用Poetry来进行构建和发布。你创建了一个PyPI帐户,在Poetry中设置了API令牌验证,然后在发布之前编译了你的项目。你的软件包可以作为公共依赖项使用,甚至可以通过Poetry包含为依赖项。

接下来,你可能想通过查看我们的Python编程教程系列《如何使用Python编码》来深入了解Python。

bannerAds