配置

pip 允许用户通过 3 种机制来改变其行为

  • 命令行选项

  • 环境变量

  • 配置文件

此页面解释了配置文件和环境变量是如何工作的,以及它们与 pip 的各种命令行选项的关系。

另请参阅

pip config 命令,它有助于管理 pip 的配置。

配置文件

配置文件可以更改命令行选项的默认值。这些文件使用标准 INI 格式编写。

pip 有 3 个“级别”的配置文件

  • global: 全局配置文件,在所有用户之间共享。

  • user: 每个用户的配置文件。

  • site: 每个环境的配置文件;即每个虚拟环境。

此外,可以指定环境变量,它们将覆盖上述任何内容。

位置

pip 的配置文件位于相当标准的位置。这个位置在不同的操作系统上是不同的,并且为了向后兼容性,还有一些额外的复杂性。请注意,如果用户配置文件同时存在于旧位置和当前位置,则当前文件中的值将覆盖旧文件中的值。

全局

在环境变量 XDG_CONFIG_DIRS(如果存在)中设置的任何路径的“pip”子目录中,例如 /etc/xdg/pip/pip.conf

这将紧随加载 /etc/pip.conf

用户

$HOME/.config/pip/pip.conf,它尊重 XDG_CONFIG_HOME 环境变量。

如果存在,也会加载旧的“每个用户”配置文件:$HOME/.pip/pip.conf

站点

$VIRTUAL_ENV/pip.conf

全局

/Library/Application Support/pip/pip.conf

用户

$HOME/Library/Application Support/pip/pip.conf 如果目录 $HOME/Library/Application Support/pip 存在,否则为 $HOME/.config/pip/pip.conf

如果存在,也会加载旧的“每个用户”配置文件:$HOME/.pip/pip.conf

站点

$VIRTUAL_ENV/pip.conf

全局
  • 在 Windows 7 及更高版本上:C:\ProgramData\pip\pip.ini(隐藏但可写)

  • 在 Windows Vista 上:不支持全局配置。

  • 在 Windows XP 上:C:\Documents and Settings\All Users\Application Data\pip\pip.ini

用户

%APPDATA%\pip\pip.ini

如果存在,也会加载旧的“每个用户”配置文件:%HOME%\pip\pip.ini

站点

%VIRTUAL_ENV%\pip.ini

PIP_CONFIG_FILE

此外,环境变量 PIP_CONFIG_FILE 可以用来指定最后加载的配置文件,其值将覆盖前面提到的文件中设置的值。将此设置为 os.devnull 会禁用加载所有配置文件。请注意,如果在设置此变量指定的位置存在文件,则不会加载用户配置文件。

加载顺序

当找到多个配置文件时,pip 会按照以下顺序组合它们

  • 全局

  • 用户

  • 站点

  • PIP_CONFIG_FILE,如果提供。

读取的每个文件都会覆盖从以前文件读取的任何值,因此,如果在全局文件和每个用户文件中都指定了全局超时,那么将使用后者的值。

命名

设置的名称来自长的命令行选项。

例如,如果你想使用不同的包索引 (--index-url) 并将 HTTP 超时 (--timeout) 设置为 60 秒,你的配置文件将如下所示

[global]
timeout = 60
index-url = https://download.zope.org/ppix

每个命令部分

每个子命令可以选择在其自己的部分中进行配置。这将使用同名全局设置进行覆盖。

例如,如果你想在运行 pip freeze 时将 timeout 降低到 10 秒,并将其他所有命令设置为 60

[global]
timeout = 60

[freeze]
timeout = 10

布尔选项

布尔选项,如 --ignore-installed--no-dependencies,可以像这样设置

[install]
ignore-installed = true
no-dependencies = yes

要启用布尔选项 --no-compile--no-warn-script-location--no-cache-dir,必须使用假值

[global]
no-cache-dir = false

[install]
no-compile = no
no-warn-script-location = false

可重复选项

对于可以重复的选项,例如 --verbose--quiet,可以使用非负整数来表示要指定的级别

[global]
quiet = 0
verbose = 2

可以在配置文件中将值追加到一个部分。这适用于追加选项,例如 --find-links--trusted-host,它们可以写在多行上

[global]
find-links =
    http://download.example.com

[install]
find-links =
    http://mirror1.example.com
    http://mirror2.example.com

trusted-host =
    mirror1.example.com
    mirror2.example.com

这使用户能够按照输入顺序为这些命令行参数添加其他值。

环境变量

pip 的命令行选项可以使用格式 PIP_<UPPER_LONG_NAME> 来用环境变量设置。破折号 (-) 必须替换为下划线 (_)。

  • PIP_TIMEOUT=60 等同于 --timeout=60

  • PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"
    

    等同于

    --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com
    

不接受值的可重复选项(例如 --verbose)可以使用重复次数来指定

  • PIP_VERBOSE=3 等同于 pip install -vvv

注意

设置为空字符串的环境变量(如在 Unix 上使用 export X=不会被视为假值。请改用 nofalse0

优先级/覆盖顺序

命令行选项覆盖环境变量,环境变量覆盖配置文件中的值。在配置文件中,命令特定部分中的值会覆盖全局部分中的值。

示例

  • --host=foo 覆盖 PIP_HOST=foo

  • PIP_HOST=foo 覆盖具有 [global] host = foo 的配置文件

  • 配置文件中命令特定的部分 [<command>] host = bar 会覆盖 [global] 配置文件部分中同名选项。