any idea how to update python PIP on a windows box?

78,084

Solution 1

easy_install -U pip

:-)

Solution 2

Run pip as a script, using python as the main executable.

python -m pip install -U pip

Solution 3

[UPDATE 2015-11-15] This post is obsolete and out of date. Current best practice is according to pip is to use the following:

python -m pip install -U pip setuptools

It's not necessary to use easy_install from setuptools. The recommended procedure to update pip, from the pip-installer page is to use get-pip.py.

To install or upgrade pip, securely download get-pip.py.

You can use the following in a Bash shell like msysgit's Git Bash.

user@machine ~$ curl -L https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | python

Use the -L option to follow redirects. Recently GitHub changed the url for raw content, so the old raw get-pip.py url has been redirected and on the pip website the url was changed. If successful, you should see the following:

$ curl -L https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1309k  100 1309k    0     0   364k      0  0:00:03  0:00:03 --:--:--  366k
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-1.5.6-py2.py3-none-any.whl#md5=4d4fb4b69df6731c7aeaadd6300bc1f2
Installing collected packages: pip
  Found existing installation: pip 1.5.4
    Uninstalling pip:
      Successfully uninstalled pip
Successfully installed pip
Cleaning up...

You can modify this for the Windows command line, but first if you don't have libcurl, download a Windows binary from Curl. You'll want to scroll all the way to the bottom and get Günter Knauf's current official Win32 binary (currently 7.29) and unzip it. Don't worry about it being 32-bit versus 64-bit. Just make sure you get the one with all the bells and whistles (ssl, zlib, etc.). Now navigate to the folder where you downloaded curl, probably c:\Users\<you>\Downloads, open the extracted folder, probably curl-7.29.0-rtmp-ssh2-ssl-sspi-zlib-idn-static-bin-w32, and you should find curl.exe. Yay! Now in a windows shell type this after the prompt (which will have your username instead of myusername), replacing path\to\Curl\ with the path to the downloaded curl.exe file.

C:\Users\myusername> path\to\Curl\curl.exe -kL https://bootstrap.pypa.io/get-pip.py | python

You need the -k option to allow curl to access the secure GitHub pip site without certs. Also, thanks Piotr Dobrogost for telling me about Windows pipes, |, which saves the step of saving the file.

If you already have the latest version of pip you will get the following message:

$ curl https://bootstrap.pypa.io/get-pip.py | python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1309k  100 1309k    0     0   369k      0  0:00:03  0:00:03 --:--:--  371k
Requirement already up-to-date: pip in c:\python27\lib\site-packages
Cleaning up...

Also works just fine in virtualenvs.

Share:
78,084
boatcoder
Author by

boatcoder

Started writing code in 1982 (in college) and haven't stopped since. I've used C++ to build applications for Libraries (the kind that lend books) and Banks and sleep labs. I've also written Java for banks. Worked with Pyramid in Grand Cayman for Uniregistry. Been working with Django since 2009 and have used it to build solutions for banks, sleep labs, and ALS clinics. Built a labor scheduling tool for the entertainment industry that uses AngularJS for the frontend SPA and Django rest framework for the back end API and DJango views for reports. I've been the rescue engineer for 911 calls that were getting lost, SQL queries that were so slow the application was timing them out, and written various scripts to patch around otherwise broken software packages where the source code was not available. A long time ago, in a galaxy far far away I wrote kernel code for Unix SYSV in the ethernet/FDDI arena for Intergraph.

Updated on May 14, 2020

Comments

  • boatcoder
    boatcoder almost 4 years

    pip install --upgrade pip doesn't work because the windows FS is brain damaged and won't let you delete an open file.

    I've tried setting my environment to the virtualenv that I want to update and then running from a different pip, but that fails with:

    (jm) E:\python\jm>c:\Python26\Scripts\pip install --upgrade pip
    Downloading/unpacking pip
      Running setup.py egg_info for package pip
        warning: no previously-included files matching '*.txt' found under directory 'docs\_build'
        no previously-included directories found matching 'docs\_build\_sources'
    Installing collected packages: pip
      Found existing installation: pip 0.7.1
        Uninstalling pip:
          Successfully uninstalled pip
      Running setup.py install for pip
        warning: no previously-included files matching '*.txt' found under directory 'docs\_build'
        no previously-included directories found matching 'docs\_build\_sources'
        Installing pip-script.py script to c:\Python26\Scripts
        Installing pip.exe script to c:\Python26\Scripts
        Installing pip.exe.manifest script to c:\Python26\Scripts
        Installing pip-2.6-script.py script to c:\Python26\Scripts
        Installing pip-2.6.exe script to c:\Python26\Scripts
        Installing pip-2.6.exe.manifest script to c:\Python26\Scripts
    Exception:
    Traceback (most recent call last):
      File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\basecommand.py", line 120, in main
      File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\commands\install.py", line 165, in run
      File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 1251, in install
      File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 466, in commit_uninstall
      File "c:\Python26\lib\site-packages\pip-0.7.1-py2.6.egg\pip\req.py", line 1549, in commit
      File "c:\Python26\lib\shutil.py", line 216, in rmtree
        rmtree(fullname, ignore_errors, onerror)
      File "c:\Python26\lib\shutil.py", line 216, in rmtree
        rmtree(fullname, ignore_errors, onerror)
      File "c:\Python26\lib\shutil.py", line 221, in rmtree
        onerror(os.remove, fullname, sys.exc_info())
      File "c:\Python26\lib\shutil.py", line 219, in rmtree
        os.remove(fullname)
    WindowsError: [Error 5] Access is denied: 'c:\\users\\mark\\appdata\\local\\temp\\pip-gvsove-uninstall\\python26\\scripts\\pip.exe'
    
    Storing complete log in C:\Users\mark\AppData\Roaming\pip\pip.log
    
    (jm) E:\python\jm>dir c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts
     Volume in drive C has no label.
     Volume Serial Number is 74E4-FE9F
    
     Directory of c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts
    
    12/07/2010  11:32 AM    <DIR>          .
    12/07/2010  11:32 AM    <DIR>          ..
    05/14/2010  05:54 PM             7,168 pip.exe
                   1 File(s)          7,168 bytes
                   2 Dir(s)  22,824,603,648 bytes free
    
    (jm) E:\python\jm>del c:\Users\mark\AppData\Local\temp\pip-gvsove-uninstall\python26\scripts\pip.exe
    

    I'm hoping someone else has figured out a way around this. Its no problem on linux....