pip:指定多个源/内部源

看本文之前需要先了解如何配置1个pypi源

需求

有是需要从不同的pypi源上搜索不同的python package,那么pip install时需要指定多个源。

场景

  • 有些包不能提供到公网上,则只能放在内部源a.pypi.org上(内部源搭建方法)
  • a.pypi.org想保持干净,不想镜像其他源,从而导致内部还有另外一个源镜像mirrors.pypi.python.org,
  • 很多依赖都写在requirements.txt中,安装是不能分别指定源
  • 内部使用安装使用时需要指定多个源,让pip依次从多个源上搜索、下载、安装

方法
- 命令中指定
- 配置文件中指定

命令中指定

pip install -i [pypi_source_1] --extra-index-url [pypi_source_2] --trusted-host [hostname of pypi_source_1] --trusted-host [hostname of pypi_source_2]

例如:pip install bjdevapi -i http://xxx.org/pypi/web/simple --extra-index-url http://yyy.org/pypi/web/simple --trusted-host xxx.org --trusted-host yyy.org

  • 会优先从xxx.org上查找,如果找到则下载并安装,否则进行下一步
  • 从yyy.org上查找,如果找到则下载并安装。

配置文件中指定

同样是~/.pip/pip.conf中配置,配制成如下内容

[global]
timeout=40
index-url= [pypi_source_1]
extra-index-url= [pypi_source_2]
[install]
trusted-host=
    hostname of pypi_source_1
    hostname of pypi_source_2

例如:

[global]
index-url= http://xxx.org/pypi/web/simple --extra-index-url
extra-index-url= http://yyy.org/pypi/web/simple
[install]
trusted-host=
    xxx.org
    yyy.org

这个例子实现的效果与上面的命令行相同

参考

pip官方文档,缺少配置文件如何配置
pip官方文档(包含配置文件的配置)

TODO

  • 不确定如果指定的两个源都没有找到包,是否会从官方源pypi.python.org上查找。
  • 有时候依赖路A-》依赖B-》依赖C这样有个链时,虽然指定了内部的源,但依赖B、C仍然有可能从pypi.python.org上下载,不知道是哪里指定的

你可能感兴趣的:(Python)