pip 配置文件详解

2022-06-02

pip 的配置文件 pip.conf 用来规定 pip 的行为,有哪些实用的配置项?配置文件一般放在什么地方生效? 本文简单介绍一下。

pip 的命令行选项

为了更好的理解 pip 的配置文件,我们有必要先来看看 pip 的命令行,本文使用的 pip 是 20.0.2 版本:

pip 的帮助文档可以用 pip -h 来查看:

$ pip -h

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
... 此处省略 N 行

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode
... 此处省略 N 行

可以看到有一些选项,类似:--isolated,除了主命令的选项外,每个子命令也有命令行,比如:

$ pip install --help

.. 此处省略 N 行

Package Index Options:
  -i, --index-url <url>       Base URL of the Python Package Index                              
  --extra-index-url <url>     Extra URLs of package indexes to 
  ... 此处省略 N 行

每个选项都有完整版本(前面有两个-号的)和简略版本(前面只有一个-号的)

在执行 pip 时,命令行里为这些选项赋值,比如:

$ pip install --extra-index-url https://some-url

如果选项太多,写在命令行里明显不方便,而且也不便于重复调用。这里就用到了配置文件 pip.conf

pip 的配置文件的作用

pip 的配置文件,就是为命令行选项赋值,采用完整版本的选项名称。比如:

extra-index-url = https://some-url

就等效于

$ pip install --extra-index-url https://some-url

pip 的配置文件的结构

pip.conf*.ini 文件的结构,以子命令为章节名,除此之外,还有一个 global

[global]
timeout = 60

[install]
timeout = 600

[freeze]
timeout = 6

[list]
format = columns

如果子命令的章节里没有规定,那么就取 global 节中的参数值。

布尔值,也就是开关的值,用 true/false 或者 yes/no 都可以

pip 的配置文件的例子

下面是一个 pip.conf 的例子:

[global]
index-url = http://some-index/pypi

extra-index-url = https://some-extra-index/pypi
                  https://another-extra-index/pypi
                  http://yet-another-extra-index/pypi

disable-pip-version-check = true

trusted-host = some-index
               some-extra-index
               another-extra-index
               yet-another-extra-index

timeout = 600
retries = 10

[list]
format = columns

[freeze]
no-color = yes

pip 的配置文件的保存位置

有4个可能保存的位置:

  1. 任意位置,保存在环境变量 PIP_CONFIG_FILE
  2. 系统级别:一般为 /etc/pip.conf
  3. 用户级别:一般为 $HOME/.pip/pip.conf
  4. 虚拟环境级别:一般为 $VIRTUAL_ENV/pip.conf,比如你用如下命令创建了一个虚拟环境:
$ python -m venv .venv

或者

$ python -m virtualenv .virtualenv

那么如果.venv/pip.conf.virtualenv/pip.conf文件存在,就会被加载。

上面这 4 个保存位置,是按上述顺序逐级加载,如果有相同的参数名称, 后面加载的会覆盖前面的。

比如:

/etc/pip.conf 中设置了 timeout=10$HOME/.pip/pip.conf 中设置了 timeout=60, 那么最终生效的是 timeout=60

捐助本站

为了保证阅读体验,本站不安放广告。但是,租用服务器和编写文章需要个人资金和时间的投入。

如果您觉得文章对您有用,请考虑捐助小站(金额不限),以期待更多原创文章。捐助记录

本站是个人网站,若无特别说明,文章均为原创,并采用 署名协议 CC-BY-NC 授权。
欢迎转载,惟请保留原文链接,且不得用于商业用途。