是否可以使用pip一次性升级所有Python包?
注意:官方问题跟踪器上对此有一个功能请求。
是否可以使用pip一次性升级所有Python包?
注意:官方问题跟踪器上对此有一个功能请求。
当前回答
我在升级方面也遇到了同样的问题。问题是,我从不升级所有包。我只升级我需要的,因为项目可能会中断。
因为没有一种简单的方法来逐个包升级和更新requirements.txt文件,所以我编写了这个pip升级程序,它还更新了所选包(或所有包)的requirements.txt文件中的版本。
安装
pip install pip-upgrader
用法
激活virtualenv(这很重要,因为它还将在当前virtualenv中安装升级包的新版本)。
cd到项目目录中,然后运行:
pip-upgrade
高级用法
如果需求放置在非标准位置,请将其作为参数发送:
pip-upgrade path/to/requirements.txt
如果您已经知道要升级的软件包,只需将其作为参数发送:
pip-upgrade -p django -p celery -p dateutil
如果需要升级到发布前/发布后版本,请在命令中添加--prerelease参数。
完全披露:我写了这个包裹。
其他回答
pip_upgrade_outdated(基于此旧脚本)完成此任务。根据其文件:
usage: pip_upgrade_outdated [-h] [-3 | -2 | --pip_cmd PIP_CMD]
[--serial | --parallel] [--dry_run] [--verbose]
[--version]
Upgrade outdated python packages with pip.
optional arguments:
-h, --help show this help message and exit
-3 use pip3
-2 use pip2
--pip_cmd PIP_CMD use PIP_CMD (default pip)
--serial, -s upgrade in serial (default)
--parallel, -p upgrade in parallel
--dry_run, -n get list, but don't upgrade
--verbose, -v may be specified multiple times
--version show program's version number and exit
步骤1:
pip install pip-upgrade-outdated
第2步:
pip_upgrade_outdated
在蝙蝠脚本中
call pip freeze > requirements.txt
call powershell "(Get-Content requirements.txt) | ForEach-Object { $_ -replace '==', '>=' } | Set-Content requirements.txt"
call pip install -r requirements.txt --upgrade
我试过Ramana的代码,我发现在Ubuntu上,每个命令都必须写sudo。这是我在Ubuntu 13.10(Saucy Salamander)上运行良好的脚本:
#!/usr/bin/env python
import pip
from subprocess import call
for dist in pip.get_installed_distributions():
call("sudo pip install --upgrade " + dist.project_name, shell=True)
改用pipx:
pipx upgrade-all
JSON+jq答案:
pip list -o --format json | jq '.[] | .name' | xargs pip install -U