我们正在使用私有 GitLab Enterprise 安装来存储 Python 模块,如文章 包注册表中的 PyPI 包
中所述
在容器内使用以下命令来安装私有托管的软件包:
pip install <package_name_01> <package_name_02> \
--index-url https://<personal_access_token_name_package_01>:<personal_access_token_package_01>@gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple \
--extra-index-url https://<personal_access_token_name_package_02>:<personal_access_token_package_02>@gitlab.example.com/api/v4/projects/<project_id_package_02>/packages/pypi/simple
如示例所示,我们使用来自不同 GitLab 项目的包。因此,我们必须将每个 GitLab 项目指定为
--index-url
和 --extra-index-url
。显示的解决方案有效,但几天后,我们收到以下错误:
pip install <package_name_01> <package_name_02> \
> --index-url https://<personal_access_token_name_package_01>:<personal_access_token_package_01>@gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple \
> --extra-index-url https://<personal_access_token_name_package_02>:<personal_access_token_package_02>@gitlab.example.com/api/v4/projects/<project_id_package_02>/packages/pypi/simple
Looking in indexes: https://<personal_access_token_name_package_01>:****@gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple, https://<personal_access_token_name_package_02>:****@gitlab.example.com/api/v4/projects/<project_id_package_02>/packages/pypi/simple
Collecting <package_name_01>
ERROR: HTTP error 404 while getting https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/files/55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX/<package_name_01>-0.0.18-py3-none-any.whl#sha256=55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX (from https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple/<package_name_01>/) (requires-python:>=3.6)
ERROR: Could not install requirement <package_name_01>==0.0.18 from https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/files/55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX/<package_name_01>-0.0.18-py3-none-any.whl#sha256=55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX because of HTTP error 404 Client Error: Not Found for url: https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/files/55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX/<package_name_01>-0.0.18-py3-none-any.whl for URL https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/files/55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX/<package_name_01>-0.0.18-py3-none-any.whl#sha256=55a5d545c01aee6ef5488cb18f9d19eee9d79XXXXXXX (from https://gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple/<package_name_01>/) (requires-python:>=3.6)
但是单独安装模块是可行的...
pip install <package_name_01> --index-url https://<personal_access_token_name_package_01>:<personal_access_token_package_01>@gitlab.example.com/api/v4/projects/<project_id_package_01>/packages/pypi/simple
pip install <package_name_02> --index-url https://<personal_access_token_name_package_02>:<personal_access_token_package_02>@gitlab.example.com/api/v4/projects/<project_id_package_02>/packages/pypi/simple
有人知道这里出了什么问题吗?
这是 GitLab 中的一个错误,需要在未来解决。
GitLab 官方问题链接:https://gitlab.com/gitlab-org/gitlab/-/issues/371814
从版本 23.1 开始,此问题已在
pip
中修复。请参阅https://github.com/pypa/pip/issues/10902#issuecomment-1792415703。
我还没有准确测试你的示例,但我已经成功配置了几个具有不同标记的额外索引。
pip install --extra-index-url \
"https://user1:[email protected]/api/v4/projects/12345/packages/pypi/simple \
https://user2:[email protected]/api/v4/projects/23456/packages/pypi/simple \
https://user3:[email protected]/api/v4/projects/34567/packages/pypi/simple" \
package3
这将从第三个私有注册表安装
package3
,并使用不同的凭据从第一个和第二个私有注册表安装 package1
和 package2
。