使用 Python-Poetry 将包发布到 Azure DevOps Artifacts

Publishing packages to Azure DeveOps Artifacts using Python-Poetry

背景

我已经看到了这个答案, 但是,在应该生成凭据的地方,当我转到 Connect to Feed > Python 时,我没有看到相同的选项。我只看到 piptwine,它们都展示了如何进行未经身份验证的推送。

我有一个 Azure DevOps Artifacts Python Feed 设置,我是它的管理员。我想使用 poetry 将我正在处理的包发布或推送到该 Feed 中。但是,当提示输入我的凭据时,我使用我的电子邮件和用于登录的密码,但我认为这些不正确。我收到 401 未经授权。所以这是我正在做的步骤

我创建了项目

poetry new phil_hello_world --src

然后我在 src/phil_hello_world/__init__.py

中添加了一些样板代码
__version__ = '0.1.0'


def hello_world():
"""Hello World Function
"""
print('Hello, World!')

然后我能够构建和安装包并在 IDLE 和其他一些脚本中使用它。

poetry build

问题

因此,问题在于如何正确设置我的 Azure DevOps Python Artifact Feed。他们推荐使用 pip 或 twine,但我正在尝试使用它,所以请耐心等待。

首先,我设置了存储库,以便 Poetry 了解它。我们将进行本地配置。

poetry config repostiories.azure-python-feed https://pkgs.dev.azure.com/myOrg/Project/_packaging/azure-python-feed/pypi/upload

然后我尝试使用以下方式将包向上推:

poetry publish -r azure-python-feed --build

然后我收到 401 未授权错误。

所以,我尝试通过以下方式使用我的登录信息:

poetry config http-basic.azure-python-feed ${USER_EMAIL} ${USER_LOGIN_PASS}

buuuuut,我仍然收到 401 Unauthorized。难道我做错了什么?我确实确保添加了“连接我”弹出窗口中列出的推荐包。

poetry add twine keyring artifacts-keyring
poetry install

要缩小问题范围,您可以尝试以下项目:

  1. 尝试用 Full access 创建一个新的 PAT,然后再试一次。
  2. 尝试运行命令poetry publish -u $(username) -p $(password) ...

$(username) 可以是任何内容,但空白除外。请记住还要使用 -r 选项来定义您的存储库。