How do I update pip itself from inside my virtual environment?
我可以更新pip管理的包,但是如何更新pip本身呢?根据
命令是什么?我需要使用distribute还是有本地pip或virtualenv命令?我已经尝试过
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 |