Pip: Incorrect command is shown to upgrade pip3

Created on 19 Nov 2019  路  6Comments  路  Source: pypa/pip

macOS High Sierra Version 10.13.6 Terminal App

  • pip version: 19.2.3
  • Python version: 3.8
  • OS: High Sierra Version 10.13.6

Description
At Python 3.8 fresh (1st time - only Python 2 was present prior) install, as well as after pip3 list command, the following incorrect message is displayed:

WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Expected behavior
The correct message to be displayed should read:

WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip**3** install --upgrade pip' command.

(missing 3 after pip)

How to Reproduce

  1. Get package from https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg
  2. Then run https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg
  3. The warning is displayed:

    WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.`

  4. Then run pip install --upgrade pip as suggested by the warning.

  5. An error is displayed:

    Collecting pip3
    ERROR: Could not find a version that satisfies the requirement pip3 (from versions: none)
    ERROR: No matching distribution found for pip3

  6. Then run pip3 install --upgrade pip as suggested by me above.

  7. Successful installation should commence, e.g.:

    Collecting pip
    Downloading https://files.pythonhosted.org/packages/00/b6/9cfa56b4081ad13874b0c6f96af8ce16cfbc1cb06bedf8e9164ce5551ec1/pip-19.3.1-py2.py3-none-any.whl (1.4MB)
    |鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅| 1.4MB 3.4MB/s
    Installing collected packages: pip
    Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
    Successfully uninstalled pip-19.2.3
    Successfully installed pip-19.3.1
    MM:~ username$ pip3 list
    Package Version


    certifi 2019.9.11
    pip 19.3.1
    setuptools 41.2.0

auto-locked needs discussion enhancement

Most helpful comment

It would be kind of ugly, but we could unconditionally put {sys.executable} -m pip.

All 6 comments

This issue seems to be lingering from previous versions, since I have not seen the correct resolution anywhere.

Right now it鈥檚 just hardcoded.

https://github.com/pypa/pip/blob/9ae2e6440d9fc98e91acec0a324b410fabc5452a/src/pip/_internal/self_outdated_check.py#L228-L239

Maybe we can use sys.argv[0] instead? But then how should we handle python -m pip?

It would be kind of ugly, but we could unconditionally put {sys.executable} -m pip.

pip3 install --upgrade pip
Thank you, the above worked

A recent version of a windows system will have a binary akin to the which of a UNIX system, maybe we can say, $(which python) install --upgrade pip and $(where python) --upgrade pip, but this is sort of not so useful. If pip is working fine, that means python? is in $PATH or %PATH% for sure.

But to solve the 2 or 3 problem, we might want to suffix the major version from sys.version_info to pip_cmd.

Ref: https://stackoverflow.com/questions/304319/is-there-an-equivalent-of-which-on-the-windows-command-line

If pip is working fine, that means python? is in $PATH or %PATH% for sure.

This is most definitely not true. There is close to no guarantee what Python is available (or any at all) when pip is invoked. I agree with @chrahunt on unconditionally showing sys.executable; it is really the most reliable thing we can use here.

Was this page helpful?
0 / 5 - 0 ratings