更新所有 Python 包
更新所有 Python 包
Python 项目依赖多了之后,手动逐个升级费时费力。无论是用 pip 还是 conda,都有办法一键更新所有已安装的包。
pip 环境
先升级 pip 本身
1 | pip install --upgrade pip |
方法一:pip-review(推荐)
pip-review 会检查所有已安装包是否有新版本,并自动更新:
1 | pip install pip-review |
--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 | conda update conda |
conda update conda:先升级 conda 本身conda update --all:升级当前环境里所有包到最新兼容版本
conda 会自己解决依赖冲突,比 pip 更不容易搞坏环境。
混合环境注意事项
如果同一个环境里既有 conda 包又有 pip 包(常见情况):
- 先用
conda update --all更新 conda 管理的包 - 再用
pip-review --auto更新 pip 管理的包 - 不要反过来——pip 升级可能会覆盖 conda 的文件,导致环境损坏
虚拟环境建议
更新前最好确认自己在正确的环境里:
1 | conda env list # 查看所有 conda 环境 |
或者 pip 的 venv:
1 | source venv/bin/activate # Linux/macOS |
小结
| 工具 | 命令 | 适用场景 |
|---|---|---|
| pip-review | pip-review --auto |
纯 pip 环境,最省心 |
| pip | pip list --outdated | cut -d= -f1 | xargs pip install -U |
不想装额外工具 |
| conda | conda update --all |
conda 环境,依赖更安全 |