如何屏蔽pip升级警告?

69

我的pip版本有问题——每个pip命令都会显示如下:

You are using pip version 6.0.8, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

我不喜欢这里给出的答案:如何摆脱pip的升级警告?因为它们都想让pip与RH版本不同步。

所以我尝试了一个干净的系统安装,使用了这个VagrantFile:

Vagrant.configure("2") do |config|

  config.ssh.username   = 'root'
  config.ssh.password   = 'vagrant'
  config.ssh.insert_key = 'true'

  config.vm.box = "bento/centos-7.3"

  config.vm.provider "virtualbox" do |vb|
    vb.cpus   = "4"
    vb.memory = "2048"
  end

  config.vm.synced_folder "..", "/vagrant"

  config.vm.network "public_network", bridge: "eth0", ip: "192.168.1.31"

  config.vm.provision "shell", inline: <<-SHELL
    set -x

    # Install pip
    yum install -y epel-release
    yum install -y python-pip
    pip freeze   # See if pip prints version warning on fresh OS install.

  SHELL

end

但后来我得到了:

==> default: ++ pip freeze
==> default: You are using pip version 8.1.2, however version 9.0.1 is available.
==> default: You should consider upgrading via the 'pip install --upgrade pip' command.

看起来我使用了错误的命令来安装pip。正确的命令是什么?


2
这里没有什么可害怕的。你有点过度担心了,但我理解,我经常做同样的事情。你需要找到一种特定的方法来抑制警告,或者学会忽略它。 - John Mee
1
在这种情况下,你需要学会忽略这个警告。只有当你从pypi获取最新版本的pip时,这个警告才会消失。CentOS打包的版本几乎总是比那个要旧。 - ngoldbaum
1
我不希望pip出现故障。 我想要一个vagrant脚本,其中包含所有已知版本的内容。 我不想只是破解现在工作的东西。 我想研究CentOS 7.3附带了什么以及如何使其正常工作而没有警告。如果pip仍然打印警告,那么pip就是有问题的,我们可以记录下来并忽略该警告。 - personal_cloud
1
@AK47 “为什么你不想要最新版本?”因为最新版本几乎肯定会破坏某些东西(以一种还没有足够时间开发解决方法的方式)。我想要被RH、Ubuntu等接受的版本。 - personal_cloud
3
我的预测被证明是非常正确的。Pip 21 完全破坏了所有 Python < 3.6 - personal_cloud
显示剩余11条评论
6个回答

102

有许多选项(2021 更新)......

使用命令行标记

pip <command> --disable-pip-version-check [options]

从命令行配置pip

pip config set global.disable-pip-version-check true

设置环境变量

export PIP_DISABLE_PIP_VERSION_CHECK=1

使用配置文件

创建一个pip配置文件,并将disable-pip-version-check设为true。

[global]
disable-pip-version-check = True

在许多Linux上,pip配置文件的默认位置为$HOME/.config/pip/pip.conf。 Windows、macOS和virtualenvs的位置太多了,无法在此详细说明。请参阅文档:

https://pip.pypa.io/en/stable/user_guide/#config-file


9
你可以运行命令 pip config set global.disable-pip-version-check true,而不是编辑文件。 - jnnnnn

51

或者只需使用命令行标志

pip --disable-pip-version-check [normal stuff here]

36

另一种不那么侵入性的、没有直接文档记录但完全支持的禁用版本检查的方式是定义:

export PIP_DISABLE_PIP_VERSION_CHECK=1

2
它已经被记录下来了,只是没有明确说明。 - Maximilian Burszley

27

@sorin的回答的基础上,只需在 Dockerfile 中添加这两行代码以禁用 pip 版本检查和缓存。

FROM python:3.6.10

ARG PIP_DISABLE_PIP_VERSION_CHECK=1
ARG PIP_NO_CACHE_DIR=1

RUN pip3 install -r requirements.txt
# ...

1
我更喜欢使用 pip install --upgrade pip 来确保使用最新的 pip,而不是禁用版本检查。 - phoenix
3
如果你的镜像在另一个dockerfile中的FROM语句中被使用,那么这是否意味着环境变量仍然存在于该镜像中?这将导致在后续使用pip install时出现意外行为。我想我更喜欢不在dockerfile中更改持久状态,所以我建议改用命令行参数:RUN pip install --disable-pip-version-check --no-cache-dir -r requirements.txt - iron9
2
@iron9 是的,那是正确的。但是你可以使用 ARG 代替 ENV,这样环境变量只在构建期间可用,而不在实际镜像中。例如:ARG PIP_NO_CACHE_DIR=1 - Andy Madge

4

使用以下命令修改pip配置:

pip config set global.disable-pip-version-check true

0

以上的答案似乎在 pip 20.3.4 上无效。

暂时使用 pip <command> --no-python-version-warning [options]

或者永久设置 pip config --no-python-version-warning --global set global.no-python-version-warning true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接