如何使用 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 所建议的那样。(是的,您可以将grep+cut替换为sedorawkperlor …)。

如果更新一个包失败,该-n1标志xargs防止停止一切

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

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)

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)

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...