无需安装包,如何更新requirements.txt中的固定依赖版本?
更新固定版本的requirements.txt到最新版(仅修改文件,不安装依赖)
方法1:原生pip命令+批量脚本
如果不想安装任何额外工具,可以用pip的原生命令结合简单脚本完成:
- 先从原文件里提取所有带版本号的包名(过滤注释和空行):
grep -E '^[^#].*==' requirements.txt | cut -d'=' -f1 > packages.txt - 遍历每个包查询最新版本,生成新的requirements内容:
while read pkg; do # 提取最新版本号,忽略错误输出 latest_version=$(pip index versions "$pkg" 2>/dev/null | grep -oP '(?<=Latest: ).*') echo "$pkg==$latest_version" done < packages.txt > new_requirements.txt - 备份原文件后替换(避免意外):
cp requirements.txt requirements.txt.bak && mv new_requirements.txt requirements.txt
方法2:用pip-tools更高效处理(需安装工具,但不碰项目依赖)
如果能接受安装pip-tools这个轻量工具,它能自动处理依赖冲突,操作更省心:
- 安装pip-tools:
pip install pip-tools - 基于原requirements.txt生成更新后的文件(仅生成文件,不安装任何项目依赖):
pip-compile --upgrade requirements.txt --output-file new_requirements.txt - 替换原文件:
cp requirements.txt requirements.txt.bak && mv new_requirements.txt requirements.txt
注意事项
- 方法1里的
pip index versions可能对某些私有源或者小众包支持不好,遇到失败的情况需要手动查版本更新。 - 方法2的pip-compile会自动解析依赖树,确保更新后的版本之间没有冲突,比手动替换更可靠。
内容的提问来源于stack exchange,提问作者Philippe
相关产品推荐
相关产品推荐

