更新所有 Python 包

更新所有 Python 包

Python 项目依赖多了之后,手动逐个升级费时费力。无论是用 pip 还是 conda,都有办法一键更新所有已安装的包。

pip 环境

先升级 pip 本身

1
pip install --upgrade pip

方法一:pip-review(推荐)

pip-review 会检查所有已安装包是否有新版本,并自动更新:

1
2
pip install pip-review
pip-review --auto

--auto 表示无需确认直接更新;去掉则先列出可更新的包让你选择。

方法二:单行命令

如果不想装额外工具,用下面这行:

1
pip list --outdated --format=freeze | cut -d= -f1 | xargs -r pip install -U

逐段说明:

  • pip list --outdated --format=freeze:列出所有有新版本的包(freeze 格式)
  • cut -d= -f1:提取包名(去掉版本号)
  • xargs -r pip install -U:逐个传给 pip 升级

macOS 用 xargs 时若包名含特殊字符可能报错,可改用 pip install -U $(pip list --outdated --format=freeze | cut -d= -f1 | tr '\n' ' ')

conda 环境

conda 管理的是整个环境,更新逻辑更干净:

1
2
conda update conda
conda update --all
  • conda update conda:先升级 conda 本身
  • conda update --all:升级当前环境里所有包到最新兼容版本

conda 会自己解决依赖冲突,比 pip 更不容易搞坏环境。

混合环境注意事项

如果同一个环境里既有 conda 包又有 pip 包(常见情况):

  1. 先用 conda update --all 更新 conda 管理的包
  2. 再用 pip-review --auto 更新 pip 管理的包
  3. 不要反过来——pip 升级可能会覆盖 conda 的文件,导致环境损坏

虚拟环境建议

更新前最好确认自己在正确的环境里:

1
2
conda env list      # 查看所有 conda 环境
conda activate xxx # 切换到目标环境

或者 pip 的 venv:

1
2
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate # Windows

小结

工具 命令 适用场景
pip-review pip-review --auto 纯 pip 环境,最省心
pip pip list --outdated | cut -d= -f1 | xargs pip install -U 不想装额外工具
conda conda update --all conda 环境,依赖更安全