看本文之前需要先了解如何配置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上下載,不知道是哪裏指定的