如何用 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          # 全部自动升级

方案二:脚本循环升级

python -m pip list --outdated --format=json > outdated.json
# 审核列表后,用同一解释器运行下面的Python脚本
import json
import subprocess
import sys
with open("outdated.json", encoding="utf-8") as f:
    packages = [item["name"] for item in json.load(f)]
if packages:
    subprocess.run([sys.executable, "-m", "pip", "install", "--upgrade", *packages], check=True)

方案三:requirements 文件法

pip freeze > requirements.txt
# 审核并更新预期依赖的版本范围,保留必要约束,不要盲目删除全部版本号
pip install -U -r requirements.txt

注意事项

  1. 先备份:pip freeze > backup.txt,仅记录包版本,不是完整环境备份或可靠回滚;
  2. 虚拟环境中操作:别直接升级系统 Python 的包,容易和系统工具冲突;
  3. 依赖冲突:盲目全升可能导致包之间版本不兼容,升级后运行 python -m pip check 及项目测试;一次解析并不保证所有未涉及已安装包都兼容;
  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 不记录解释器、系统库或已消失的安装包,直接 install -r 也不会自动清除新增包。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台