如何使用pip升级所有Python包

2022-09-05 00:47:29

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

注意:官方问题跟踪器上有一个功能请求


答案 1

目前还没有内置标志,但您可以使用:

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

  • 正如@jawache所建议的那样,将跳过可编辑(“-e”)包定义。(是的,您可以将 + 替换为 or or or...)。grepgrepcutsedawkperl

  • 的标志可防止在更新一个包失败时停止所有内容(感谢@andsens)。-n1xargs


注意:这有无限的潜在变化。我试图保持这个答案简短明了,但请在评论中提出变化!


答案 2

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

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)

对于点>= 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)