协慌网

登录 贡献 社区

使用 pip 升级所有包

是否可以使用pip一次升级所有 Python 包?

请注意,官方问题跟踪器上有此功能请求

答案

还没有内置标志,但你可以使用

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

注意:这有无限的潜在变化。我试图让这个答案简短而简单,但请在评论中建议变化!

在较旧版本的pip ,您可以使用此代码:

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

grep是跳过可编辑(“-e”)包定义,如 @jawache 所建议的那样。 (是的,您可以用sedawkperl或...... 替换grep + cut )。

如果更新一个包失败, xargs-n1标志会阻止停止所有内容(感谢@andsens )。

您可以使用以下 Python 代码。与pip freeze不同,这不会打印警告和 FIXME 错误。 对于点数 < 10.0.1

import pip
from subprocess import call

packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)

对于 pip> = 10.0.1

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)

升级所有本地包; 你可以使用pip-review

$ pip install pip-review
$ pip-review --local --interactive

pip-review是一个pip-tools的分支。请参阅@knedlsepp提到的pip-tools问题pip-review包有效,但pip-tools包不再有效。

pip-review适用于 Windows 0.5 以上版本