记录 Poetry 发布包到 pypi 遇到的坑:No suitable keyring backends were found
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录 Poetry 发布包到 pypi 遇到的坑:No suitable keyring backends were found相关的知识,希望对你有一定的参考价值。
项目场景
使用 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 时填写的密码。
以上是关于记录 Poetry 发布包到 pypi 遇到的坑:No suitable keyring backends were found的主要内容,如果未能解决你的问题,请参考以下文章