如何用 pip 升级所有已安装的 Python 包?

pip 没有内置的"升级全部"命令,常用方案:pip list --outdated 逐个升级,或用脚本循环升级,或 pip-review 工具一键完成。本文介绍各种方案及注意事项。

最佳实践
如何用 pip 升级所有已安装的 Python 包?封面

pip 本身没有 pip upgrade --all。常用方案:用 pip list --outdated 查看可升级的包,然后逐批 pip install -U 包名;想一键升级全部可用第三方工具 pip-review 或写一行循环脚本。

方案一:pip-review(推荐)

pip install pip-review

pip-review --local --interactive   # 逐个确认是否升级
pip-review --local --auto          # 全部自动升级

方案二:脚本循环升级

# Linux/macOS
pip list --outdated --format=freeze | cut -d= -f1 | xargs -n1 pip install -U

# Windows (PowerShell)
pip list --outdated --format=json | ConvertFrom-Json | ForEach-Object { pip install -U $_.name }

方案三:requirements 文件法

pip freeze > requirements.txt
# 编辑 requirements.txt 把版本号去掉(pkg==1.0 → pkg)
pip install -U -r requirements.txt

注意事项

  1. 先备份pip freeze > backup.txt,升级出问题可以回滚;
  2. 虚拟环境中操作:别直接升级系统 Python 的包,容易和系统工具冲突;
  3. 依赖冲突:盲目全升可能导致包之间版本不兼容,升级后跑一遍测试;
  4. pip 自身python -m pip install -U pip 单独升级。

常见问题(FAQ)

Q:pip install --upgrade * 能用吗?
A:不能。pip 不支持通配符包名,这条命令会报错。

Q:如何只升级补丁版本(不大版本跳跃)?
A:pip 没有直接支持,需要在 requirements 中用 ~= 约束(如 requests~=2.31.0 只允许 2.31.x);或用 pip-tools 管理。

Q:升级后项目跑不起来了?
A:用备份的 freeze 文件回滚:pip install -r backup.txt(注意先卸载多余的新版本)。这也是虚拟环境隔离的价值。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台