记录 Poetry 发布包到 pypi 遇到的坑:No suitable keyring backends were found

21 篇文章 3 订阅

项目场景

使用 Poetry 开发一个 Python 项目。在本地可以正常使用 poetry build 构建包,然后使用 poetry publish 将包发布到 pypi 官网。但是当我将其部署到 GitHub Actions 时,可以正常构建包,但发布包时却遇到了如下问题。

问题描述

包构建成功了,发布到 pypi 时报错:

No suitable keyring backends were found

在这里插入图片描述


这是我配置工作流的代码:

- name: Publish to PyPI
        env:
          POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
        run: poetry publish

其中,PYPI_TOKEN 是从 pypi 官网申请的一个针对所有项目都能使用的密钥。

在这里插入图片描述

并且,我已经将其添加到了仓库设置中的密钥设置里面了。

在这里插入图片描述

原因分析

之前一个包,同样的配置,发布的时候是没有任何问题的,但现在新建的这个包却遇到了这个问题,就有点玄学了。然后我不使用 GitHub 的工作流,直接在本地发布的话是没有任何问题的。

简单分析一波:本地使用 poetry publish 发布包时提示我输入的是 pypi 注册时输入的账号和密码。GitHub 工作流发布包使用的是仓库的密钥,而且既然它报错的话,就说明是密钥没找到或者找到了但没使用。

GitHub 仓库密钥我已经配置了,它就在哪里,不可能找不到。再看一下报错信息:No suitable keyring backends were found。一开始,我以为报错信息是 UploadError HTTP Error 500,后来才发现方法找错了,UploadError 是由于前面的 keyring backends were found 错误引发的,不是根本性的错误。

poetry 的 Issue 中也有人谈论过这个问题。但给的解决方案我也没看太懂,下面是我自己研究出来的解决方案。

解决方案

既然使用 poetry publish 发布包到 pypi 有问题,那我们就用别的方法来发布包,换一个 Action:

- name: Publish to PyPI
  uses: ortega2247/pypi-upload-action@master
  with:
    user: XavierJiezou
    password: ${{ secrets.PYPI_PASSWORD }}

这里的 user 是你在 pypi 注册时填写的用户名,然后 password 请在仓库中配置密钥,密钥名称为 PYPI_PASSWORD,密钥内容为你在注册 pypi 时填写的密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值