是否可以使用pip一次性升级所有Python包?
注意:官方问题跟踪器上对此有一个功能请求。
是否可以使用pip一次性升级所有Python包?
注意:官方问题跟踪器上对此有一个功能请求。
当前回答
这似乎对我有用。。。
pip install -U $(pip list --outdated | awk '{printf $1" "}')
之后,我使用带有空格的printf来正确分隔包名。
其他回答
这似乎对我有用。。。
pip install -U $(pip list --outdated | awk '{printf $1" "}')
之后,我使用带有空格的printf来正确分隔包名。
使用pipupgrade。。。最新版本2019
$ pip install pipupgrade
$ pipupgrade --verbose --latest --yes
pipupgrade帮助您从requirements.txt文件升级系统、本地或软件包!它还选择性地升级不破坏更改的包。
pipupgrade还确保升级多个Python环境中的包。它与Python2.7+、Python23.4+和pip9+、pip10+、pip18+、pip19+兼容。
注:我是该工具的作者。
使用pip升级程序
使用该库,您可以轻松升级所有依赖项包这些是您遵循的设置。
pip安装pip升级程序
pip升级路径/of/requirements_txt_file
交互式pip需求升级程序。因为逐包升级需求是件麻烦事。它还会更新requirements.txt文件中的版本。
在我看来,这个选项更简单易懂:
pip install -U `pip list --outdated | awk 'NR>2 {print $1}'`
解释是,pip-list——过时输出所有过时包的列表,格式如下:
Package Version Latest Type
--------- ------- ------ -----
fonttools 3.31.0 3.32.0 wheel
urllib3 1.24 1.24.1 wheel
requests 2.20.0 2.20.1 wheel
在awk命令中,NR>2跳过前两条记录(行),{print$1}选择每行的第一个单词(正如SergioAraujo所建议的,我删除了tail-n+3,因为awk确实可以处理跳过记录)。
您可以只打印过期的软件包:
pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'