57

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....

3
  • I got the error, but the upgrade did in fact work. Commented Jul 8, 2015 at 5:25
  • 1
    It's so great to see that this is still a problem 3.5 years later with the latest Python 2.7.10 and pip 7.1.2 on Windows. None of the suggestions below fix it. Super awesome. Commented Nov 5, 2015 at 14:45
  • The solution that worked for me is here. In short: you're using pip to update pip, but as it is running it can't overwrite itself. Copy it somewhere and run it from there. Commented Nov 13, 2016 at 0:01

6 Answers 6

118

easy_install -U pip

:-)

Sign up to request clarification or add additional context in comments.

3 Comments

That was too simple. I didn't know that easy_install did understood virtualenvs. Thanks.
Each virtualenv gets setuptools installed into it as well as pip - handy to know about for packages which don't currently install cleanly from source on Windows (without tinkering) such as PIL, for which easy_install will use the .exe installer (at least until pip gains this capability).
easy_install is an old tool, that is deprecated. Use python -m pip install --upgrade pip instead.
67

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

python -m pip install -U pip 

3 Comments

Times have changed and I think this is the new way to do this.
Yes, this seems to be what the PIP developers decided to recommend when they discussed this bug: github.com/pypa/pip/issues/1299
This one is Good.
19

[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.

4 Comments

You can use pipes in Windows. :)
This doesn't upgrade -- it says "requirements already up-to-date: pip" if pip is already installed.
@remram can you please post your terminal session. This has not been my experience. I have used this method many, many times to upgrade pip to the latest, but I have not seen the message you are describing. Are you still having issues. I am happy to troubleshoot with you.
@remram Ah, maybe you were foiled by the change in url for raw files. Try it with the new links on the pip website - I've also updated them here.
0

Try:
Right Click Anaconda Prompt (Run as Admin)

>> conda update pip 

(If you are using Anaconda. PS: It worked for me)

Comments

-1

Hey i Just able to Upgrade PIP on Python 36 with Following Command in CMD

python -m pip install --upgrade pip

CMD : Upgrading PIP in Python 36

Comments

-2

pip install pip --upgrade

enter image description here worked for me

Note: Make sure you are running command Prompt in administrator mode

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.