Conf 可以同时指定两个 index-url 吗?

我试过在 pip.conf中使用 pip 和 index-url。但是,我不能确保我们能够获得所有必要的 Python 库。因此,我想知道如果 pip 支持在 pip.conf[global]部分指定多个 index-url

122300 次浏览

If you want more than one package index you have to use the --extra-index-url

From the pip man page:

   -i,--index-url <url>
Base URL of Python Package Index (default https://pypi.python.org/simple/).


--extra-index-url <url>
Extra URLs of package indexes to use in addition to --index-url.

In pip.conf the name of settings must be put without --. From the documentation:

The names of the settings are derived from the long command line option, e.g. if you want to use a different package index (--index-url) and set the HTTP timeout (--default-timeout) to 60 seconds your config file would look like this:

[global]
timeout = 60
index-url = http://download.zope.org/ppix

So you can add in your pip.conf

extra-index-url = http://myserver.com/pip

In your pip.conf, you will also have to add both of the index hosts as trusted, so would look something like this:

[global]
index-url = http://download.zope.org/simple
trusted-host = download.zope.org
pypi.org
secondary.extra.host
extra-index-url= http://pypi.org/simple
http://secondary.extra.host/simple

In this example, you have a primary index and two extra index urls and all hosts are trusted.

If you don't specify the host as trusted, you will get the following error:

The repository located at secondary.extra.host is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host secondary.extra.host'.

Cheers!

updating radtek 's answer with the new URL to pypi.

It changed to https://pypi.org

So for your pip to be able to fall back to the original pypi server you'll need to add "https://pypi.org/simple" as an extra-index-url while keeping your local server as index-url. Don't forget to add both to your "trusted-host" list

This update is based on the comment of onelaview: "Official PyPI now supports HTTPS so you can specify https://pypi.org/simple/ for extra-index-URL and avoid specifying pypi.org in trusted-host."


So your pip.conf needs to be containing the following:

[global]
index-url = https://somedomain.org/simple
trusted-host = somedomain.org
pypi.org
secondary.extra.host
extra-index-url= http://pypi.org/simple <= either one of these is fine
https://pypi.org/simple <= either one of these is fine
http://secondary.extra.host/simple

You can also do this by setting an environment variable:

export PIP_EXTRA_INDEX_URL=http://localhost:8080/simple/

which is equivalent to

[global]
extra-index-url = http://localhost:8080/simple/

but does not require a pip.conf file

I'd add to @Tomasz Bartkowiak answer. You can pass multiple URLs to a PIP_TRUSTED_HOST,PIP_EXTRA_INDEX_URL using spaces:

export PIP_TRUSTED_HOST="somedomain.org pypi.org secondary.extra.host"


export PIP_EXTRA_INDEX_URL="http://pypi.org/simple https://pypi.org/simple http://secondary.extra.host/simple"