如何设置两个 PyPI 索引
How to setup two PyPI indices
我有一个本地 GitLab 安装,它带有一个本地 PyPI 服务器来存储公司内部 Python 包。
如何配置我的 PyPI 以在两个索引服务器中搜索包?
我阅读了 .pypirc
/ pip/pip.ini
并找到了各种设置,但目前没有解决方案。
- 大多数解决方案将所有搜索永久切换到其他索引服务器。但是我希望能够像往常一样从 pypi.org 安装和更新包,而一些包来自本地索引。
- 使用凭据设置多个索引服务器 接缝仅限于 distutils(例如由 twine 使用),但不被 pip 使用
- 在
[global]
或 [install]
中配置索引服务器存在混淆。我假设后一个是 pip install
的规则子集。 (这里的文档不清楚。)
- 虽然 twine 可以引用配置文件中的存储库条目,例如
-r gitlab
引用 [gitlab]
部分,但 pip 不能使用这样的命名引用...
所以我想达到的目标是:
pip
应该能够从 pypi.org 安装和更新常规软件包,例如 colorama
pip
应该能够从 gitlab.company.com 安装和更新软件包
- 使用用户名 (
__token__
) 和密码 (7a3b62342c784d87
) 的身份验证必须有效
到目前为止的实验:
[global]
[install]
find-links =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
trusted-host =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
[distutils]
index-servers =
gitlab
[gitlab]
repository = https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
username = __token__
password = geheim
试试这个(根据 https://github.com/pypa/pip/issues/6797 and 中的信息):
[global]
index-url = http://pypi.org/simple
trusted-host = pypi.org
gitlab.company.de
extra-index-url= https://username:password@gitlab.company.de/api/v4/projects/2142423/packages/pypi
目标
pip install
应该 install/update 来自 GitLab 和 PyPi 仓库的包。如果两者都存在相同的包,PyPi 是 首选。
pip install
应该支持身份验证。首选,如果我们可以通过某种方式让它从配置文件中读取,这样我们就不需要重复指定它。
理论
pip install
支持 --extra-index-url
指定额外的 PyPi 索引。同样的内容也可以通过 pip.conf
文件提供。
pip
使用支持 ~/.netrc
的 requests
作为配置文件 (docs).
步骤
- 在
pip config -v list
建议的任何位置创建一个 pip.conf
(pip.ini
如果在 Windows)。
- 将您的 GitLab PyPi 索引 URL 添加到
pip.conf
。
[install]
extra-index-url = https://gitlab.com/api/v4/projects/12345678/packages/pypi/simple
- 创建或更新您的
~/.netrc
文件并为 GitLab 添加您的授权详细信息。
machine gitlab.com
login <token-name>
password <token-pass>
- 我们现在可以像
pip install <package-name>
一样简单地安装软件包。 pip
现在将查看两个索引来查找您的包,优先提供给 index-url
指向的那个。
附加信息
- 如果支持多个索引,
pip search
也可以实现同样的效果。到那时,需要手动指定应该使用哪个 PyPi 索引 URL。 GitLab 似乎不支持 pip search
,因为它抛出 415 客户端错误:不支持的媒体类型 当指定为 PyPi 索引时。
- 至于你的疑问,
pip.conf
中的每个部分都指向该特定命令,[install]
为 pip install
提供配置,[search]
为 pip search
和很快。 [global]
大概是指可以为所有命令指定的参数,无论是pip install
还是pip search
。
.pypirc
文件专门用于配置与上传相关的包索引(由twine/flint使用),其中pip.conf
与配置pip
相关联,它管理python 本地系统上的软件包。
我有一个本地 GitLab 安装,它带有一个本地 PyPI 服务器来存储公司内部 Python 包。
如何配置我的 PyPI 以在两个索引服务器中搜索包?
我阅读了 .pypirc
/ pip/pip.ini
并找到了各种设置,但目前没有解决方案。
- 大多数解决方案将所有搜索永久切换到其他索引服务器。但是我希望能够像往常一样从 pypi.org 安装和更新包,而一些包来自本地索引。
- 使用凭据设置多个索引服务器 接缝仅限于 distutils(例如由 twine 使用),但不被 pip 使用
- 在
[global]
或[install]
中配置索引服务器存在混淆。我假设后一个是pip install
的规则子集。 (这里的文档不清楚。) - 虽然 twine 可以引用配置文件中的存储库条目,例如
-r gitlab
引用[gitlab]
部分,但 pip 不能使用这样的命名引用...
所以我想达到的目标是:
pip
应该能够从 pypi.org 安装和更新常规软件包,例如 coloramapip
应该能够从 gitlab.company.com 安装和更新软件包- 使用用户名 (
__token__
) 和密码 (7a3b62342c784d87
) 的身份验证必须有效
- 使用用户名 (
到目前为止的实验:
[global]
[install]
find-links =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
trusted-host =
https://pypi.org
https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
[distutils]
index-servers =
gitlab
[gitlab]
repository = https://gitlab.company.de/api/v4/projects/2142423/packages/pypi
username = __token__
password = geheim
试试这个(根据 https://github.com/pypa/pip/issues/6797 and
[global]
index-url = http://pypi.org/simple
trusted-host = pypi.org
gitlab.company.de
extra-index-url= https://username:password@gitlab.company.de/api/v4/projects/2142423/packages/pypi
目标
pip install
应该 install/update 来自 GitLab 和 PyPi 仓库的包。如果两者都存在相同的包,PyPi 是 首选。pip install
应该支持身份验证。首选,如果我们可以通过某种方式让它从配置文件中读取,这样我们就不需要重复指定它。
理论
pip install
支持--extra-index-url
指定额外的 PyPi 索引。同样的内容也可以通过pip.conf
文件提供。pip
使用支持~/.netrc
的requests
作为配置文件 (docs).
步骤
- 在
pip config -v list
建议的任何位置创建一个pip.conf
(pip.ini
如果在 Windows)。 - 将您的 GitLab PyPi 索引 URL 添加到
pip.conf
。
[install]
extra-index-url = https://gitlab.com/api/v4/projects/12345678/packages/pypi/simple
- 创建或更新您的
~/.netrc
文件并为 GitLab 添加您的授权详细信息。
machine gitlab.com
login <token-name>
password <token-pass>
- 我们现在可以像
pip install <package-name>
一样简单地安装软件包。pip
现在将查看两个索引来查找您的包,优先提供给index-url
指向的那个。
附加信息
- 如果支持多个索引,
pip search
也可以实现同样的效果。到那时,需要手动指定应该使用哪个 PyPi 索引 URL。 GitLab 似乎不支持pip search
,因为它抛出 415 客户端错误:不支持的媒体类型 当指定为 PyPi 索引时。 - 至于你的疑问,
pip.conf
中的每个部分都指向该特定命令,[install]
为pip install
提供配置,[search]
为pip search
和很快。[global]
大概是指可以为所有命令指定的参数,无论是pip install
还是pip search
。 .pypirc
文件专门用于配置与上传相关的包索引(由twine/flint使用),其中pip.conf
与配置pip
相关联,它管理python 本地系统上的软件包。