如何使用 pip 升级所有 Python 包

新手上路,请多包涵

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

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

原文由 thedjpetersen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 707
2 个回答

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

 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 所建议的, grep 是跳过可编辑(“-e”)包定义。 (Yes, you could replace grep + cut with sed or awk or perl or…) .

  • -n1 标志 xargs 防止在更新一个包失败时停止一切(感谢 @andsens )。


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

原文由 rbp 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用以下 Python 代码。与 pip freeze 不同,这不会打印警告和 FIXME 错误。 对于 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)

原文由 user515656 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题