你可以直接升级所有过时的包:
pip install -U $(pip list -o freeze | cut -f1 -d=)
长版:
pip install --upgrade $(pip list --outdated --format freeze | cut --fields=1 --delimiter="=")
或者您可以创建并使用一个文件来列出所有过时的 pip 包名称:
list所有过时的pip包并将输出格式化为“冻结”;
-d= 剪切“=”(分隔符)之后的所有内容;
> 将结果转储到文件中。
pip list -o freeze | cut -f1 -d= > pip_list_outdated.txt
长版:
pip list --outdated --format freeze | cut --fields=1 --delimiter="="> pip_list_outdated.txt
输出将类似于:
gunicorn
PySimpleGUI
python-engineio
python-socketio
requests
setuptools
six
使用每行中的名称升级到最新版本的过时 pip 包:
pip install -U $(<pip_list_outdated.txt)
长版:
pip install --upgrade $(<pip_list_outdated.txt)
错误的方式:
如果你输入:
pip list -o freeze:
你会得到类似的东西:
autopep8==1.4.3
chardet==3.0.4
Django==2.1.4
如果您尝试使用此结果进行升级:
pip install -U $(pip list -o freeze)
你会收到消息:
Requirement already up-to-date: autopep8==1.4.3 in ...
Requirement already up-to-date: chardet==3.0.4 in ...
Requirement already up-to-date: Django==2.1.4 in ...
这是因为结果中列出的版本已经安装。
要升级到最新版本,您需要不带版本的包名或带有要升级的版本号的名称。