【问题标题】:Custom pip.conf location for pip 8.1pip 8.1 的自定义 pip.conf 位置
【发布时间】:2019-12-11 01:19:51
【问题描述】:

我使用 Python 3.5 和 pip 8.1.1 作为操作系统包的一部分管理一组 Ubuntu 16.04 服务器。服务器无法访问 Internet,pip 需要配置内部 pypi 镜像。

我在/home/hanxue/.config/pip/pip.conf 有以下配置文件

[global]
index-url = https://pypimirror/simple
cert = /etc/ssl/certs/ca-certificates.crt

不幸的是 pip 8.1.1 没有读取位于~/.config/pip/pip.conf 的配置文件。只有 >10 及以上的 pip 版本使用更一致的 XDG 路径 ~/.config/pip/pip.conf

我已尝试设置 PIP_CONFIG_FILE 环境变量,但 pip 8.1.1 没有选择它

$ PIP_CONFIG_FILE=/home/hanxue/.config/pip/pip.conf /usr/bin/pip3 search tensorflow

我知道我可以在~/.pip/pip.conf 创建文件的副本来解决问题。但这是针对最终用户的,他们最终会得到 2 个pip.conf,从而在未来产生混乱。例如,编辑~/.pip/pip.conf 但发现 pip 19 / python 3.6 并没有拾取设置。

如何让 pip 8.1 从非标准位置获取配置?

【问题讨论】:

  • 为什么不给所有人一个~/.pip/pip.conf
  • @phd pip >= 9.0 不读取 ~/.pip/pip.conf。无论如何,配置文件都应该在~/.config 下,而不是在$HOME 中有单独的点目录
  • 我的pip 19.0.3 完美阅读。配置必须在程序期望它们的地方。如果旧版本的pip 读取~/.pip/pip.conf 而新版本读取~/.pip/pip.conf~/.config/pip/pip.conf,则可移植的解决方案是将配置放入~/.pip/pip.conf
  • 无论出于何种原因,我再次将PIP_CONFIG_FILE 与 pip 8.1.1 (Ubuntu 16.04) 和 pip 8.1.2 (CentOS 7.4) 一起使用,并且 pip 正在获取非标准的 pip.conf 位置。我不热衷于使用 ~/.pip/pip.conf,因为它不符合 XDG,并且被标记为旧路径 github.com/pypa/pip/blob/19.2.1/src/pip/_internal/…
  • 对我来说恰恰相反:我不关心 XDG,我当然更喜欢 ~ orver ~/.config,而且我不想定义额外的 env var。

标签: python python-3.x ubuntu pip


【解决方案1】:

pip 9.0 及更新版本

如果你现在使用的是最新版本的 pip,或者任何高于 9.0.0 的版本,配置文件应该在~/.config/pip/pip.conf。根据official pip user guide

在 Unix 上,默认配置文件是:$HOME/.config/pip/pip.conf,它尊重 XDG_CONFIG_HOME 环境变量。

在 macOS 上,如果目录 $HOME/Library/Application Support/pip 存在,则配置文件为 $HOME/Library/Application Support/pip/pip.conf,否则为 $HOME/.config/pip/pip.conf

在 Windows 上,配置文件是 %APPDATA%\pip\pip.ini

文档明确指出$HOME/.pip/pip.conf 是旧路径,而configuration file function in pip's source is similarly named legacy

pip 8.x.x 及以上版本

告诉 pip 你的配置文件位于$HOME/.config/pip/pip.conf 并带有PIP_CONFIG_FILE 环境变量

$ PIP_CONFIG_FILE=~/.config/pip/pip.conf /usr/bin/pip3 install --user colorama
Collecting colorama

已经在 Ubuntu 16.04 上使用 pip 8.1.1 和在 CentOS 7.4 上使用 pip 8.1.2 进行了测试

【讨论】:

  • 请注意pip 用户指南可能更清晰。如果pip 尊重XDG_CONFIG_HOME,则默认为$XDG_CONFIG_HOME/pip/pip.conf,如果XDG_CONFIG_HOME 为空或未设置,则默认为~/.config/pip/pip.conf
  • @chepner 是的,它没有收到 XDG_CONFIG_HOME。 IMO 这是一个错误 - github.com/pypa/pip/issues/6849
  • 我在您的错误报告中评论了一个可能的错误;看着the source codepip 应该做正确的事。
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 2017-03-18
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
相关资源
最近更新 更多