macOS High Sierra Version 10.13.6 Terminal App
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
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.`
Then run pip install --upgrade pip
as suggested by the warning.
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
Then run pip3 install --upgrade pip
as suggested by me above.
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
This issue seems to be lingering from previous versions, since I have not seen the correct resolution anywhere.
Right now it鈥檚 just hardcoded.
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
.
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.
Most helpful comment
It would be kind of ugly, but we could unconditionally put
{sys.executable} -m pip
.