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上下載,不知道是哪裏指定的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章