如何使用pip升级所有Python包?

2024-04-26 01:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以使用^{}同时升级所有Python包?

注意:官方问题跟踪程序中有a feature request用于此。


Tags: 程序官方requestfeature
3条回答

要升级所有本地包,可以使用^{}

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

pip-reviewpip-tools的叉。见@knedlsepp提到的^{} issuepip-review包可以工作,但是pip-tools包不再工作。

pip-review在Windows上工作since version 0.5

您可以使用以下Python代码。与pip freeze不同,这不会打印警告和修复错误。 对于pip<;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 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将跳过@jawache建议的可编辑(“-e”)包定义。(是的,您可以用sedawkperl或……)替换grep+cut

xargs-n1标志防止在更新一个包失败时停止所有操作(谢谢@andsens)。

相关问题 更多 >