如何在虚拟环境内更新/升级pip本身?

908
我能够更新由pip管理的软件包,但是如何更新pip本身呢?根据pip --version,我目前在虚拟环境中安装了pip 1.1,并且我想要更新到最新版本。
那么命令是什么?我需要使用distribute还是有原生的pip或virtualenv命令?我已经尝试过pip updatepip update pip但都没有成功。

105
pip install --upgrade pip?这只是另一个PyPI软件包。 - Cairnarvon
2
该命令显示“/Users/zak/MyProject/venv/bin/pip install: error: no such option: --update”错误。 - zakdances
4
抱歉,应该使用“--upgrade”而不是“--update”。我立即编辑了我的帖子,但你可能在错误的时间看到了它。 - Cairnarvon
2
@Cairnarvon,pip3的命令与普通的pip不同吗?我正在尝试使用pip3,但它告诉我找不到它,然后又抱怨说它不是最新版本...甚至都不让我更新/升级它! - Charlie Parker
这真的并不复杂。这里未删除的答案数量根本无法证明其合理性。 - Karl Knechtel
@Cairnarvon 即使命令被命名为 pip3,但软件包仍然被称为 pip - undefined
24个回答

1521

pip 就像其他任何 PyPI 包 一样;您可以使用它来升级自己,就像升级任何包一样:

pip install --upgrade pip

在Windows上,推荐的命令是:
py -m pip install --upgrade pip

65
在Windows系统下,我试图使用pip升级pip时遇到了权限问题。相反,我使用了easy_install来升级:easy_install pip - bsa
9
当我执行这个命令时,pip似乎已经升级了(从1.1到1.4),但当我执行“pip --version”时,它仍然显示旧版本1.1。尝试重新激活虚拟环境,但仍然显示旧版本。 - Zitrax
51
在Windows上,最好使用类似这样的命令:python -m pip install --upgrade pip,以避免从脚本目录运行pip.exe。 - bialix
请修改你的“危险”建议;这个命令可能会使用户的Windows没有安装任何“pip”。 - ankostis
AttributeError: 'NoneType' object has no attribute 'bytes' - Ivan Borshchov
显示剩余8条评论

110
更安全的方法是通过一个 Python 模块来运行 pip:run pip though a python module
python -m pip install -U pip

在Windows上,似乎存在一个二进制文件尝试替换自身的问题,这种方法可以解决这个限制。

13
如果pip检测到自身有更新版本,它现在会建议使用这个新版本。 - tephyr
5
我认为这种方法更安全的原因是,对于某些操作系统(比如Windows),直接运行pip可能会在可执行文件上创建一个文件锁,从而防止其更新。通过调用Python并直接告知其加载模块,你可以避免访问可执行文件。 - jpmc26
1
你必须以管理员模式运行命令提示符才能使其正常工作。我尝试了几个其他建议,但直到我以管理员模式重新启动命令提示符窗口后,这个命令才完美地工作了。 - DaveN59
2
现在我遇到了这个错误:ModuleNotFoundError: No module named 'pip' - Talha Anwar

56

在我的情况下,我的pip版本出现了问题,因此单独的更新不起作用。

解决方法:

(inside virtualenv):easy_install -U pip

2
这也是我的情况。我尝试了所有其他方法,但只有这个方法帮助了我。谢谢! - levif
我也是这样,这是在Debian上唯一有效的方法。使用python或pip在虚拟环境中升级pip会失败,因为它拒绝卸载存在于venv之外的现有pip。 - user3748764
运行这个命令会显示很多信息,包括 Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!,而在运行 --upgrade 时没有显示。这很可能是安装任何 pip 包失败以及通过 pip 升级 pip 失败的原因,SSL 似乎出了问题。 - Vadorequest
救命稻草,谢谢。在Windows 10上尝试了所有其他方法,只有这个有效。 - Milo Persic
在Linux Mint上无故障运行。 - Scriddie

19

在Debian Jessie下,我尝试了上述所有解决方案。它们都不起作用,因为它只是由Debian软件包管理器编译的最新版本,即1.5.6,相当于6.0.x版本。一些需要pip作为先决条件的软件包将无法正常工作,例如spaCy(需要选项--no-cache-dir才能正确运行)。

因此,实际上解决这些问题的最佳方法是通过wget从网站下载或使用curl运行get-pip.py

 wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py
 python ./get-pip.py
 python3 ./get-pip.py

这将安装当前版本,即在编写此解决方案时的9.0.1版本,远远超出了Debian提供的版本。

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

4
pip install --upgrade pip 失败时,以下内容可能会有所帮助。 - Andrew Bowman
1
如果我可以多次点赞这个答案的话,我一定会这么做。通过更新到pip 10.x,这刚刚解决了一个pip 9.x SSL错误的问题。请参见 https://dev59.com/ll8e5IYBdhLWcg3wNIJp。 - Keith John Hutchison
1
如果你曾经支持过它,我会很高兴。我的答案通常需要花费一两个小时的搜索和多年的经验才能找到。但我的问题可能就不是这样了?人们可以非常刻薄! :) - Eamonn Kenny

15

对于 windows

  • 打开 命令提示符
  • 并使用以下命令
  • python -m pip install -–upgrade pip
  • 别忘了重启编辑器,以避免任何错误
  • 您可以通过下面的命令检查 pip 的版本
  • pip --version
  • 如果您想安装特定版本的 pip,例如 版本18.1,则使用此命令
  • python -m pip install pip==18.1

13

如果您正在使用虚拟环境(venv),那么任何pip安装更新都会导致系统pip版本的升级,而不是venv pip版本的升级。您需要同时升级pip引导包。

python3 -m pip install --upgrade pip setuptools wheel

安装Python成功后,列表仍显示较旧版本的pip。如何将最新版本指向当前环境? - Arpan Saini
1
我应该使用$HOME/venv/bin/python3还是只用python3 - alper
1
如果您已经通过source /path/to/myvenv/bin/activate激活了venv,则只需使用python3甚至只需使用python。如果未激活,请运行/path/to/myvenv/bin/python3 - dre-hh
1
python3 -m pip install --upgrade pip setuptools wheel /usr/bin/python3: No module named pip - Eugene Gr. Philippov
1
有些发行版会自带没有pip的python3版本。最简单的方法是使用ensurepip并将pip引导到同一个python安装中。 python3-m ensurepip --upgrade https://docs.python.org/3/library/ensurepip.html - dre-hh
如果您正在使用 venv,任何对 pip install 的更新都会导致系统的 pip 升级而不是 venv 的 pip。不,您只需要确保在命令中使用 venv 的 Python。如果您使用 venv 的 pip 命令包装器,这也应该是自动的(在 Windows 上无法工作,因为 Windows 不允许运行可执行文件替换其自身文件)。只需确保激活了 venv。 - Karl Knechtel

9
pip install --upgrade pip
在UBUNTU 18.04中,当我执行上述命令时出现了以下错误:
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/bin/pip'
Consider using the `--user` option or check the permissions.

以下命令解决了我的问题:

pip install --upgrade pip --user

8

使用“pip install --upgrade pip”升级pip并不总是有效的,因为由于可怕的证书问题:确认ssl证书时出现问题:[SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1警报协议版本

我喜欢使用一行命令来创建虚拟环境:

curl https://bootstrap.pypa.io/get-pip.py | python -

或者,如果您想要在整个框中安装它,则需要:

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

如果您想在自动化脚本中运行时使输出静音,可以给curl添加-s标志。


6
为了让我成功地运行这个程序,在使用VS CODE的Python命令提示符(在WIN10上)时,我需要深入到Python目录中。在我的情况下,它位于AppData\Local\Programs\Python\python35-32目录中。然后我运行了以下命令...
python -m pip install --upgrade pip

这个有效,我已经准备好了。

在Anaconda Prompt中对我有效。 - Jaroslav Štreit

2

对于Linux系统

python3 -m pip install --upgrade pip

For windows:

  1. Type Command Prompt in the Windows search box

  2. In the Command Prompt, type cd\

  3. Press Enter, and you’ll see the drive name C:\>

  4. Locate your Python application path, which is the folder where you originally installed Python

    Here is an example of a Python application path:

    C:\Users\Ron\AppData\Local\Programs\Python\Python39
    
  5. Once you retrieved the Python application path, type the following command in the Command Prompt:

    cd followed by your Python application path

    For our example:

    C:\>cd C:\Users\Ron\AppData\Local\Programs\Python\Python39
    
  6. Press Enter

  7. Type python -m pip install --upgrade pip and press Enter


这使得在Windows上的过程似乎比在Linux上更加复杂,但实际上并非如此。 - Karl Knechtel

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