关于python:如何从我的虚拟环境中更新pip本身?

How do I update pip itself from inside my virtual environment?

我可以更新pip管理的包,但是如何更新pip本身呢?根据pip --version的说法,我目前在我的virtualenv中安装了pip 1.1,我想更新到最新版本。

命令是什么?我需要使用distribute还是有本地pip或virtualenv命令?我已经尝试过pip updatepip update pip,但没有成功。


pip和其他包一样,只是一个pypi包;您可以使用它来自我升级,就像升级任何包一样:

1
pip install --upgrade pip

在Windows上,建议使用以下命令:

1
python -m pip install --upgrade pip


更安全的方法是通过python模块运行pip:

1
python -m pip install -U pip

在Windows上,试图替换自己的二进制文件似乎有问题,这个方法可以绕过这个限制。


在我的例子中,我的PIP版本被破坏了,所以更新本身无法工作。

修复:

1
(inside virtualenv):easy_install -U pip


我在Debian Jessie下面尝试了上面提到的所有解决方案。它们不起作用,因为它只采用Debian Package Manager编译的最新版本,即1.5.6,相当于6.0.x版。一些使用PIP作为先决条件的包不会作为结果工作,例如SPAcy(它需要选项--no cache dir才能正常工作)。

因此,解决这些问题的最佳方法是运行使用wget、从网站或使用curl下载的get-pip.py,如下所示:

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

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

1
2
3
4
 $ 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)


由于可怕的证书问题,使用"pip install--upgrade pip"升级pip并不总是有效:确认SSL证书时出现问题:[ssl:tlsv1_alert_protocol_version]tlsv1 alert protocol version

我喜欢对虚拟环境使用单行命令:

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

或者如果你想在盒子里安装它,你需要

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

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


打开具有管理员权限的命令提示符,然后重复该命令:

1
python -m pip install --upgrade pip


为了让它对我有用,我必须使用python命令提示符(在vs代码的win10上)在python目录中进行深入研究。在我的例子中,它在我的"appdatalocalprogramspythonpython35-32"目录中。从那里我开始执行命令…

1
python -m pip install --upgrade pip

这很管用,我很高兴去。


在我的例子中,这是通过debian stable中的终端命令行实现的。

1
python3 -m pip install --upgrade pip

如果您使用的是venv,那么对pip安装的任何更新都将导致升级系统pip而不是venv pip。您还需要升级pip引导包。

1
  python3 -m pip install --upgrade pip setuptools wheel


我在覆盆子圆周率上也遇到了类似的问题。

问题是HTTP需要SSL,所以我需要强制它使用HTTPS来绕过这个要求。

1
sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

1
sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

单行python程序我发现最好的方法是编写一个单行程序,下载并运行官方的GETPIP脚本。代码见下文。

官方文档建议使用curl来下载get-pip脚本,但是由于我在Windows上工作,并且没有安装curl,所以我更喜欢使用python本身来下载和运行该脚本。

下面是可以使用python 3通过命令行运行的单行程序:

1
python -c"import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

这一行根据安装说明获取官方的"get pip.py"脚本,并使用"exec"命令执行该脚本。

对于python2,将"urllib.request"替换为"urllib2":

1
python -c"import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

注意事项值得注意的是,盲目运行任何Python脚本都是固有的危险。因此,官方说明建议在运行之前下载并检查脚本。

也就是说,很多人实际上并没有检查代码,只是运行它。这个一行程序使这更容易。


PIP版本10有一个问题。它将显示为错误:

1
2
3
4
5
ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File"/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

解决方案是在要升级的venv中,然后运行:

1
sudo myvenv/bin/pip install --upgrade pip

而不仅仅是

1
sudo pip install --upgrade pip

在Windows7的笔记本电脑上,安装最新版本PIP的正确方法是:

1
python.exe -m pip install --upgrade pip

我已经在c:pythonpython36中安装了python,所以我转到windows命令提示符,键入"cd c:pythonpython36"以找到正确的目录。然后输入"python-m install--upgrade pip"一切都好!


很简单。只需从https://bootstrap.pypa.io/get-pip.py下载pip。将文件保存在某个文件夹或桌面中。我将文件保存在D驱动器中,然后从命令提示符导航到下载了PIP的文件夹。然后在那里键入

1
python -get-pip.py

Pip installation screenshot