使用 twine 上传 pypi 包到 gitlab 时出现 {"error":"404 Not Found"}

问题描述 投票:0回答:3

我正在遵循官方文档,同时尝试使用 twine 将我的 pypi 包上传到 gitlab 私有存储库。

我正在 gitlab.com 上开发一个社区项目,该项目设置为私有。

我正在使用以下命令行:

twine upload dist/*.tar.gz --skip-existing --verbose --repository-url https://gitlab.com/api/v4/projects/mygroup/myproject/packages/pypi

当我运行此命令时,twine 会要求输入用户名和密码。我输入我的电子邮件和 2 因素令牌(我为我的 gitlab.com 帐户启用了 2 因素身份验证)

Enter your username: [email protected]
/home/myname/.venv/myproject/lib/python3.7/site-packages/twine/auth.py:72: UserWarning: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.
  warnings.warn(str(exc))

Enter your password: 

然后我收到一条令人愉快的消息:

Uploading myproject-0.0.1.tar.gz
100%|██████████████████| 25.6k/25.6k [00:00<00:00, 87.4kB/s]

接下来是一个不太令人愉快的错误消息:

Content received from server:
{"error":"404 Not Found"}
HTTPError: 404 Not Found from https://gitlab.com/api/v4/projects/mygroup/myproject/packages/pypi
Not Found

现阶段我有一些评论。

  1. 文档提到了示例 gitlab-ci.yaml 文件的存储库,但我在那里找到的任何示例中都没有提到 PyPi 或 twine。

  2. 文档提到了 gitlab.example.com。我不知道为什么,这对 gitlab.com 也适用吗?

无论如何,我不知道如何从这里开始。我调试此问题或解释所产生错误的含义的方法有限。 我怎样才能完成这项工作

upload gitlab gitlab-ci pypi twine
3个回答
3
投票

据我所知,你必须使用repository-url中的项目id:

twine upload dist/*.tar.gz --skip-existing --verbose --repository-url https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/pypi

0
投票

如果它是 CI 的一部分,那么最好使用 gitlab 变量:

twine upload dist/*.tar.gz --skip-existing --verbose --repository-url 
 ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi

这将正确获取 package_id 和 api url


0
投票

我遇到这个错误是因为我使用的是

https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/pypi/simple
(这是 pip 需要的额外索引,并且在浏览器中有效),而不是
https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/pypi
(这是 twine 需要的,但在 pip 或浏览器中失败)

© www.soinside.com 2019 - 2024. All rights reserved.