【原创】pip3 使用报警问题

相关环境

1、概要

在对 Ubuntu 18.04 上的 pip3 9.0.1 版本使用 pip install -U pip 的方式进行升级后,再使用 pip 就会出现一堆警告信息。这个警告信息目前不影响使用,但从警告信息来看,会在未来版本中出现失败风险。

所以,本文分享在出现了 pip 的警告信息的过程以及之后的解决方案!

2、环境信息

Ubuntu 18.04.5
apt 1.6.12
Python 3.6.9
pip3 9.0.1

问题描述

1、问题描述

发现在 Ubuntu 18.04 上使用 pip3 的时候报出了如下警告,大概意思是 pip 调用的是老版本的脚本,这种方式以后可能会失败。

$ pip3 -V
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.2.3 from /home/jiangzl/.local/lib/python3.6/site-packages/pip (python 3.6)

 2、问题经过

(1) 我使用 apt 包管理工具安装了 python3 与 python3-pip

$ sudo apt install -y python3
$ sudo apt install -y python3-pip

安装完成后,python3 与 pip3 的信息如下

$ python3 -V
Python 3.6.9
$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
$ which python3
/usr/bin/python3
$ which pip3
/usr/bin/pip3

使用 pip3 进行第三方模块安装的时候,会出现提示 pip 版本过低,可以通过下面的命令进行升级

pip3 install --upgrade pip

(2) 更新 pip 

$ pip3 install --upgrade pip
Collecting pip
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading https://pypi.doubanio.com/packages/4e/5f/528232275f6509b1fff703c9280e58951a81abe24640905de621c9f81839/pip-20.2.3-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 1.3MB/s 
Installing collected packages: pip
Successfully installed pip-20.2.3

(3) 问题出现

$ pip3 -V                   
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
pip 20.2.3 from /home/jiangzl/.local/lib/python3.6/site-packages/pip (python 3.6)

问题原因

1、为什么会出现上面的问题呢?

$ which pip3
/usr/bin/pip3
$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

从官方文档也可以看出,这是因为当前系统中存在了两个不同版本的 pip 的原因。

2、为什么会出现两个不同版本的 pip 呢?

是因为 pip3 是通过 apt 的系统包管理工具安装的,而执行 pip3 install --upgrade pip 则是通过 python 的模块进行安装的,所以就出现了两个不同版本的 pip。

官方原话

Only ever use your system package manager to upgrade the system pip. The system installed pip is owned by the distribution, and if you don't use distribution-supplied tools to manage it, you will hit problems. Yes, we know pip says "you should upgrade with pip install -U pip" - that's true in a pip-managed installation, ideally distributions should patch this message to give appropriate instructions in the system pip, but they don't. We're working with them on this, but it's not going to happen soon (remember, we're looking at cases where people are upgrading old versions of pip here, so patches to new versions won't help).

官方的大概意思是如果你使用的是操作系统的包管理工具(如 apt)安装的 Python3 及 pip3,那么也建议你升级也使用系统的包管理工具来升级,如果你没这样升级,那就可能遇到这个问题。

另外,官网文档还提到了如果使用 pip3 进行安装的时候提示你使用 pip install --upgrade pip 来升级 pip,这本身没有问题。但是这个消息应该由发行版来提供相关说明 blabla...,但他们并没有这么做,而且这个问题暂时还不会被解决...

解决方法

方法一、按照提示,使用 python3 -m pip 的方式运行

如下示例:

$ python3 -m pip -V   
pip 20.2.3 from /home/jiangzl/.local/lib/python3.6/site-packages/pip (python 3.6)

看起来这种方法确实能解决警告的问题,但这并不是根本地解决问题。而且这种方式的命令矿长也不方便记忆。

注:

python3 -m pip 表示的是将 pip 作为 Python 的一个模块来运行,这样就不是调用系统的 pip3(/usr/bin/pip3) 而是调用的当前用户安装模块中的 pip3 了。

方法二、卸载 pip 模块

$ pip3 uninstall -y pip
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Found existing installation: pip 20.2.3
Uninstalling pip-20.2.3:
  Successfully uninstalled pip-20.2.3
$ pip3 -V             
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

注:

(1) 该方法只会卸载当前用户下的 pip3 模块,不会卸载系统级别的 pip 模块。

(2) 只使用系统管理工具升级系统级的 pip 程序,即使用如下命令来升级

$ sudo apt upgrade python3-pip

总结:官方的态度是如果你使用的是操作系统的包管理工具(如 apt)安装的 Python3 及 pip3,那么也建议你升级也使用系统的包管理工具来升级。否则,别这么干...

附录

参考 pip 官方的 issue:

https://github.com/pypa/pip/issues/5599

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注