将 pip 与两个 --extra-index-url 参数一起使用,这两个参数都指向同一个域

2rs*_*2ts 8 python pip

我们在我的办公室使用我们自己的 python 包索引,我们正在尝试添加一个新的。当我尝试同时指定两个索引时,系统会提示我登录,但如果我一次只使用一个,则不会。

例如:

$ pip install --user --upgrade \
    --extra-index-url https://<api token>:@packagecloud.io/2rs2ts/oldrepo/pypi/simple \
    --extra-index-url https://<other api token>:@packagecloud.io/2rs2ts/newrepo/pypi/simple \
    mypackage
Collecting mypackage
User for packagecloud.io:
Run Code Online (Sandbox Code Playgroud)

但是如果我只指定其中一个--extra-index-url参数,那么我下载我的包就好了。

我 99% 确定我正确传递了参数,因为它是append在 source 中指定的操作。所以我认为问题是这两个索引 URL 都来自packagecloud.io……但我可能是错的。无论哪种方式,我如何使用我的两个存储库?

The*_*ool 13

您还可以使用环境变量PIP_EXTRA_INDEX_URL。然后你必须使用空格作为分隔符。

export PIP_EXTRA_INDEX_URL="https://user:token@repo-a/ https://user:token@repo-b/"
pip install
Run Code Online (Sandbox Code Playgroud)

我在文档中找到了有关环境变量的信息。根据有关的示例PIP_FIND_LINKS,我尝试了空间并且它有效。


2rs*_*2ts 9

显然这是pip中的一个错误。指定多个--extra-index-url指向同一域的 s 时,HTTP 基本身份验证信息未正确存储。我提出了一个问题,但与此同时,有一个解决方法。通过指定--extra-index-urls 之一作为--index替代,并将 PyPI 添加为--extra-index-url,我能够成功下载我的包:

$ pip install --user --upgrade \
    --index https://<api token>:@packagecloud.io/2rs2ts/oldrepo/pypi/simple \
    --extra-index-url https://<other api token>:@packagecloud.io/2rs2ts/newrepo/pypi/simple \
    --extra-index-url https://pypi.python.org/simple \
    mypackage
Collecting mypackage
  Downloading https://packagecloud.io/2rs2ts/newrepo/pypi/packages/mypackage-1.0.0-py2-none-any.whl (52kB)
etc. etc.
Run Code Online (Sandbox Code Playgroud)