24

I am new to Linux and Ubuntu.

I was trying to upgrade pip but ran into this...

$ sudo pip install --upgrade pip
Cannot fetch index base URL https://pypi.python.org/simple/
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.0-py2.py3-none-any.whl#md5=b108384a762825ec20345bb9b5b7209f
  Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
  Found existing installation: pip 1.5.4
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed pip
Cleaning up...

Any idea why?

Zanna
  • 69,223
  • 56
  • 216
  • 327
Spencer Lee
  • 343
  • 1
  • 2
  • 4
  • 2
    try `apt` i.e. `sudo apt-get install python-pip` to upgrade `pip` – heemayl Jul 05 '15 at 23:15
  • hmmm... says its the most up-to-date version... is this because apt-get and pip get their packages form different sources? (i.e. would that be a difference between apt-get and pypi?) 'python-pip is already the newest version.' – Spencer Lee Jul 06 '15 at 01:30
  • that means it is up to date... – Tim Jul 06 '15 at 10:32
  • 1
    except running: pip list --outdated pip returns the following: pip (Current: 1.5.4 Latest: 7.1.0) Could not find any downloads that satisfy the requirement python-apt Some externally hosted files were ignored (use --allow-external python-apt to allow). – Spencer Lee Jul 07 '15 at 04:13

11 Answers11

23

Try install it with easy_install:

easy_install -U pip
Jens Erat
  • 4,993
  • 7
  • 31
  • 37
NamPNQ
  • 341
  • 2
  • 5
  • 1
    Not sure if this answer is still valid? [This post](http://stackoverflow.com/q/3220404) on Stack Overflow asked on "Why use pip over easy_install?", in which one of the answers noted that: "The only good reason that I know of to use easy_install in 2015 is the special case of using Apple's pre-installed Python versions with OS X 10.5-10.8." –  Dec 09 '15 at 08:53
  • 1
    Focus on question, the question is 'Unable to upgrade pip', and I suggest way upgrade via easy_install, it work in Dec 2015, ok? – NamPNQ Dec 09 '15 at 12:16
  • To downvoters, do explain why this answer was downvoted earlier? I managed to find a recent comment under [this post](http://askubuntu.com/q/561377/37165), which is quoted here: " easy_install -U pip from ByteCommander suggestion worked for me. – Tampa Jun 1 at 12:23". The `easy_install` method reportedly works for some users. –  Dec 10 '15 at 12:35
  • 1
    This worked for me (with `sudo`). Previously, `sudo apt-get install python-pip` was giving me `python-pip is already the newest version (8.1.1-2ubuntu0.4)` whereas 9.0.1 was available, but couldn't be installed by `pip install --upgrade pip` (which left the version unchanged at 8.1.1). After `easy_install` the version was upgraded. – Kurt Peek Jan 12 '17 at 10:33
  • Although this works, this does replace *system-managed files* with the newer `pip` version. A re-install of the `python-pip` package would replace the files again. Other code relying on the package version being present and correct could break (small but non-zero chance), and `easy_install` could add *extra* files that are not removed when in future upgrading `python-pip` to a newer version that may interfere and break things. – Martijn Pieters Jan 16 '17 at 11:29
  • Even if the easy_install worked i don't really understand why both methods pip and python-pip didn't did the trick. Thx – m3nda Feb 01 '17 at 11:09
7

I had the same issue for a long time and figured out the solution today. When you install pip via python-pip, you download from the deprecated Linux server. You should download from the python server. To solve this, do the following:

sudo apt-get purge pip
sudo apt-get install python-setuptools
sudo apt-get install python-dev 
sudo easy_install pip 
pip install pip --upgrade 
xofer
  • 558
  • 4
  • 7
user730924
  • 71
  • 1
  • 1
4

This is caused by a conflict between a version of pip provided by a system package, like python-pip, and a version provided by PyPI through pip itself.

To fix this, simply remove python-pip with sudo apt-get purge python-pip.

If you had already used the old version of pip to install a newer version, this should leave the updated version in /usr/local/bin. If not, you can install the most recent version of Pip from scratch with:

Pip for Python 2.7:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7

Pip for Python 3.x:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python3
Timothy C. Quinn
  • 1,053
  • 1
  • 12
  • 22
Cerin
  • 6,269
  • 12
  • 68
  • 97
  • This one works for me, It turns out that I make mistake by removing python 2.7, then the python packages become missing, and I have to reinstall pip for python 3 – fredy kardian Oct 26 '20 at 06:38
3

Edit:

pip install -U pip

or

pip install --upgrade pip

-U is shorthand for --upgrade.


Old answer:

The apt system and PyPI uses two different mechanisms.

In Ubuntu's repositories many modules of python are available as packages, but they are not much in numbers as compared to PyPI (The Python Package Index). To remain consistent about upgrading a package you need to consider the method you have used initially used to install it.

So if you have installed a package (module) from PyPI using pip then you should used pip to upgrade the package from PyPI (including pip itself). On the other hand if you have used apt system to install a module (as package) you need to use apt to upgrade that again.

In a nutshell, run the following to upgrade python-pip to the latest version :

sudo apt-get install python-pip
heemayl
  • 90,425
  • 20
  • 200
  • 267
  • 5
    This doesn't answer the question. python-pip doesn't upgrade pip, it only installs a very old version of pip in such as way that pip cannot upgrade itself. – Cerin Feb 07 '17 at 14:18
  • @Cerin Did you read the answer thoroughly? `python-pip` is the package from the (official) Universe repository whereas `easy_install` installs from `PyPI`. As always the official repositories do not not contain the latest package to keep the system stable (and dependencies resolved). – heemayl Feb 07 '17 at 16:31
  • 7
    @heemayl, OP asked how to upgrade pip and you effectively told them to install an old version of pip. The correct solution is to uninstall python-pip and install from PyPI. Installing python-pip does not upgrade pip. – Cerin Feb 07 '17 at 21:29
  • I don't understand this answer. The OP says `$ sudo pip install --upgrade pip` didn't work. Answer: `pip install --upgrade pip` – cowlinator Jan 23 '20 at 00:46
2

Actually, you can edit your 'pip' script:

from root:

$ which pip  # -> prints 'pip' location

$ nano `which pip` # -> open with your editor, note the backticks!

replace the __requires__ with your latests pip version like:

__requires__ = 'pip==7.1.2'

than edit line with 'load_entry_point' call to:

load_entry_point(__requires__, 'console_scripts', 'pip')()

and:

$pip -V
pip 7.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

also, i have to update my setuptools package, to install some packages.

s0rg
  • 21
  • 2
1

Use this link to upgrade. Basically:

  1. Download the file get-pip.py
  2. run python get-pip.py
Manish
  • 11
  • 1
1

If python-pip installed from apt repositories with sudo user - run sudo -H install --upgrade pip , same for installing PIP modules .

Here the output from my console on 16.04

..... Successfully installed requests
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
:~$ pip install --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 672kB/s 
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
:~$ sudo -H pip install --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 692kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-9.0.1
:~$ 

also see What is the -H flag for pip? https://stackoverflow.com/questions/28619686/what-is-the-h-flag-for-pip

1

Try running sudo -H pip3 install --upgrade pip to upgrade your pip3 (for Python 3). Conversely, you can do sudo -H pip2 install --upgrade pip to upgrade pip as well (for Python 2).

1

I ran into this problem when working on a remote machine I was ssh'd into. I had just installed python 3, and was unable to get pip to upgrade, even though I'd attempted to upgrade via both pip AND apt-get.

Logging out of the remote server and logging back in fixed it.

0

I got similar problem on upgrading pip 9.0.3 to 18.0 version.

So on upgrading first uninstallation happens and then the latest version is installed. However, I found that on your first attempt it says "successfully uninstalled pip-9.0.3"

On subsequent attempts, we get the same error. This is because the pip-9.0.3 is uninstalled. As with the accepted answer, I installed pip as an admin in my windows 10 system, got thee latest version and then all was well.

Hope this helps.

Eswar
  • 121
  • 4
0

I'm only a beginner so I'm not sure but probably is something related to the differences between python 2 and 3. I think that is not necessary to be a superuser but you can do it easily using pip3 instead of pip also to upgrade pip : pip3 install --upgrade pip

NBee
  • 11