如何使用pip更新/升级软件包?


170

使用pip更新软件包的方式是什么?那些不起作用:

pip update
pip upgrade

我知道这是一个简单的问题,但由于不是那么容易找到它,所以它是必需的(pip 文档不会弹出,并且堆栈溢出中的其他问题是相关的,但并不完全与此相关)

Answers:


278

方式是

sudo pip install [package_name] --upgrade

或总之

sudo pip install [package_name] -U

sudo 会要求输入您的root密码以确认操作。

如果您没有root密码(如果您不是管理员),则可能应该使用virtualenv,然后删除sudo

pip install [package_name] --upgrade

2
至于pip install --help说:-U, --upgrade Upgrade all specified packages to the newest available version.。因此,它应该是大写字母-U,而不是-u
彼得·梁·梁

25
为什么当您这样做时没有显示出这样的通用选项,pip --help这让我感到困惑……
Husky

3
@Husky-是的,同样的道理,为什么他们不仅仅做出一个upgrade可以回答您所看到的内容的命令,这是一个好问题。(意思是,如果您使用“升级”,它只会执行install+的--upgrade操作。)某种“别名”。
bshea

10

对于非特定软件包和更通用的解决方案,您可以签出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

3
尽管这不能直接回答问题,但可能是某些人在寻找此消息时实际寻找的东西。
borgr

8

tl; dr脚本更新所有已安装的软件包

如果只想升级一个软件包,请参考@borgr的答案。我经常觉得有必要,或者至少是令人愉快的,一次升级我的所有软件包。目前,pip本身不支持该操作,但是使用sh脚本已足够简单。您使用pip listawk(或cuttail)和命令替换。我通常的单线是:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

这将要求输入root密码。如果您没有访问权限,则--user可以考虑使用pipor或virtualenv选项。


7
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 +


我喜欢这个解决方案。我添加了打印以显示更新过程中的软件包名称:print('updating ', pkg['name'])
pvoj

4

要为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

这将升级位于以下位置的pip:/usr/local/lib/python2.7/dist-packages


7
这不是OP所要求的。他在问如何升级特定的软件包,而不是PIP本身。
commadelimited

尽管如此,在这些其他答案中似乎很有帮助
uhoh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.