有什么办法可以在Windows电脑上更新Python PIP吗?

57

pip install --upgrade pip 无法生效,因为Windows文件系统有些问题,不允许你删除一个开放的文件。

我尝试将环境设置为我想要更新的虚拟环境,然后使用不同的pip运行,但是遇到了以下错误:

(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

我希望有人已经找到了绕过这个问题的方法。在Linux上没有问题...


我收到了错误提示,但实际上升级已经成功完成了。 - yoyo
1
很高兴看到这个问题在最新的Python 2.7.10和Windows上的pip 7.1.2仍然存在,已经过去了3.5年。下面的建议都没有解决它。真是太棒了。 - jarmod
对我有效的解决方案在这里。简而言之:您正在使用pip更新pip,但是由于它正在运行,因此无法覆盖自身。将其复制到其他位置并从那里运行即可。 - davidhigh
6个回答

118

easy_install -U pip

:-)


2
太简单了。我不知道 easy_install 理解 virtualenvs。谢谢。 - boatcoder
1
每个虚拟环境都会安装setuptools和pip,这对于那些在Windows上无法从源代码中干净地安装的软件包(除非进行调整),例如PIL非常有用。对于这种情况,easy_install将使用.exe安装程序(至少在pip获得此功能之前)。 - Jonny Buchanan
1
easy_install 是一个已经过时的工具。请使用 python -m pip install --upgrade pip 来代替。 - sinoroc

67

使用Python作为主要可执行文件,将pip作为脚本运行。

python -m pip install -U pip

5
时代已经变化了,我认为这是新的做法。 - boatcoder
3
是的,这似乎是PIP开发人员在讨论此错误时决定推荐的做法:https://github.com/pypa/pip/issues/1299 - user9876
这个不错。 - AskMe

19

[更新于2015年11月15日]本文已过时。目前最佳实践是根据pip使用以下方法:

python -m pip install -U pip setuptools

不必使用setuptools中的easy_install。从pip-installer页面更新pip的推荐步骤是使用get-pip.py

要安装或升级pip,请安全地下载get-pip.py

您可以在类似msysgit的Git BashBash shell中使用以下命令。

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

使用-L选项来跟随重定向。最近GitHub更改了原始内容的url,因此旧的原始get-pip.py url已被重定向,在pip网站上URL已更改。如果成功,您应该看到以下内容:
$ 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...

你可以修改这个Windows命令行,但是如果你没有libcurl,从Curl下载一个Windows二进制文件。你需要滚动到底部并获取Günter Knauf的当前官方Win32二进制文件(目前为7.29)并解压缩它。不用担心它是32位还是64位。只要确保你得到了所有的功能(ssl,zlib等)。现在导航到你下载curl的文件夹,可能是c:\Users\<you>\Downloads,打开提取的文件夹,可能是curl-7.29.0-rtmp-ssh2-ssl-sspi-zlib-idn-static-bin-w32,你应该会找到curl.exe。耶!现在在Windows shell中,在提示符后键入以下内容(其中将使用你的用户名代替myusername),将path\to\Curl\替换为已下载curl.exe文件的路径。
C:\Users\myusername> path\to\Curl\curl.exe -kL https://bootstrap.pypa.io/get-pip.py | python

您需要使用-k选项以允许curl在没有证书的情况下访问安全的GitHub pip站点。此外,感谢Piotr Dobrogost告诉我关于Windows管道|,这可以省略保存文件的步骤。
如果您已经拥有最新版本的pip,则会收到以下消息:
$ 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...

同样可以在虚拟环境中正常工作。


1
你可以在Windows中使用管道符号。 :) - Piotr Dobrogost
如果pip已经安装,则会显示“要求已经是最新的:pip”,而不会进行升级。 - remram
@remram,你能否请发布一下你的终端会话?这不是我的经验。我已经使用这种方法很多次来升级pip到最新版本,但我没有看到你所描述的信息。你还有问题吗?我很乐意与你一起解决问题。 - Mark Mikofski
@remram 啊,也许你被原始文件链接的更改所困扰了。请尝试使用 pip 网站上的新链接 - 我在这里也已经更新了它们。 - Mark Mikofski

0

尝试:
右键单击Anaconda提示符(以管理员身份运行)

>> conda update pip

(如果您正在使用Anaconda。附注:这对我有效)


-1

嘿,我刚刚在CMD中使用以下命令成功升级了Python 36上的PIP:

python -m pip install --upgrade pip

CMD : Upgrading PIP in Python 36


-2

pip install pip --upgrade

在此输入图像描述 对我有用

注意:确保以管理员模式运行命令提示符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接