【发布时间】:2018-04-14 17:43:33
【问题描述】:
使用 pip 更新包的方法是什么? 那些不起作用:
pip update
pip upgrade
我知道这是一个简单的问题,但它是必需的,因为它不是那么容易找到(pip documentation 不会弹出,堆栈溢出的其他问题是相关的,但不完全是这样)
【问题讨论】:
使用 pip 更新包的方法是什么? 那些不起作用:
pip update
pip upgrade
我知道这是一个简单的问题,但它是必需的,因为它不是那么容易找到(pip documentation 不会弹出,堆栈溢出的其他问题是相关的,但不完全是这样)
【问题讨论】:
方法是
pip install <package_name> --upgrade
简而言之
pip install <package_name> -U
使用sudo 会要求输入您的root 密码以确认操作,但虽然很常见,但被认为是unsafe。
如果您没有 root 密码(如果您不是管理员),您可能应该使用 virtualenv。
您也可以使用用户标志仅在该用户上安装它。
pip install <package_name> --upgrade --user
【讨论】:
对于非特定包和更通用的解决方案,您可以查看pip-review。检查哪些包可以/应该更新的工具。
安装:
$ pip install pip-review
然后运行:
$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
【讨论】:
pip-review 需要先安装pip
在终端使用此代码:
python -m pip install --upgrade PAKAGE_NAME #instead of PAKAGE_NAME
例如我想更新 pip 包:
python -m pip install --upgrade pip
更多示例:
python -m pip install --upgrade selenium
python -m pip install --upgrade requests
...
【讨论】:
tl;dr 脚本来更新所有已安装的包
如果您只想升级一个包,请参考@borgr 的answer。我经常发现一次升级我所有的软件包是必要的,或者至少是令人愉快的。目前,pip 本身并不支持该操作,但使用 sh 脚本就足够简单了。您使用pip list、awk(或cut 和tail)和命令替换。我正常的单行是:
for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done
这将要求输入 root 密码。如果您无权访问它,pip 或 virtualenv 的 --user 选项可能值得研究。
【讨论】:
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)
另存为 xx.py
然后运行 Python3 xx.py
环境:python3.5+ pip10.0+
【讨论】:
虽然跑题了,但可能会遇到希望更新 pip 本身的问题(请参阅here)。
为Python3.4+升级pip,必须使用pip3,如下:
sudo pip3 install pip --upgrade
这将升级位于:/usr/local/lib/python3.X/dist-packages 的 pip
否则,要升级 Python2.7 的 pip,您将使用 pip,如下所示:
sudo pip install pip --upgrade
这将升级位于:/usr/local/lib/python2.7/dist-packages 的 pip
【讨论】: