pip 的配置文件 pip.conf 用来规定 pip 的行为,有哪些实用的配置项?配置文件一般放在什么地方生效? 本文简单介绍一下。 pip 的命令行选项 为了更好的理解 pip 的配置文件,我们有必要先来看看 pip 的命令行,本文使用的 pip 是 20.0.2 版本: pip 的帮助文档可以用 pip -h 来查看: $ pip -h Usage: pip [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 Base URL of the Python Package Index --extra-index-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个可能保存的位置: 任意位置,保存在环境变量 PIP_CONFIG_FILE 中 系统级别:一般为 /etc/pip.conf 用户级别:一般为 $HOME/.pip/pip.conf 虚拟环境级别:一般为 $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