使用pip升级所有Python软件包

pip没有内建一条直接更新所有软件包的命令,因为pip建议你在每个项目上创建一个 Python virtualenv 来运行。为了能够在项目上使用最新的软件包,可以考虑升级软件包,并在 requirements.txt 文件中记录所有需要的软件包。

绝对不要使用 sudo pip install 命令,也就是不要使用root身份安装Python软件包

  • 升级 pip :

使用pip升级pip
python -m pip install --upgrade pip
  • pip 22.3 开始,已经移除了 pip list --outdated 结合 --format=freeze 的组合参数,所以现在需要处理json输出,升级所有软件包的命令和之前不同,应该采用:

使用pip (22.3及以上版本) 升级Python软件包
# 获取所有非最新版本的python包列表
pip --disable-pip-version-check list --outdated --format=json | python -c "import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))"

# 升级所有软件包
pip list --outdated | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U
  • 如果是早于 pip 22.3 版本可以使用:

使用pip (22.3之前版本) 升级Python软件包
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

备注

使用 pip list --outdated 命令可以列出所有不是最新的软件包

  • pip也可以将安装包的列表输出到一个requirements文件 requirements.txt 然后安装升级:

通过requirements.txt执行pip升级所有Python软件包
pip freeze > requirements.txt
pip install -r requirements.txt --upgrade

参考