是否有pip freeze替代方案可生成不锁版本依赖文件保持包更新?
实现无固定版本依赖导出的方案
pip freeze 本身没有提供输出通配符版本的内置参数,下面几个方法都能满足你的需求,在Gitpod环境里可以直接用:
零额外依赖一行搞定
Gitpod默认终端带sed文本处理工具,直接执行以下命令就能直接生成所有依赖为包名==*格式的requirements.txt:pip list --format=freeze | sed 's/==.*$/==*/' > requirements.txt逻辑很简单:先用
pip list --format=freeze输出和pip freeze完全一致的已安装包列表,再用正则把每行==后面的固定版本号替换成*,不需要装任何额外工具,你用iPad连Gitpod的场景下直接跑就行。导出更精准的项目依赖(更推荐)
pip freeze会把当前虚拟环境里所有装过的包都导出来,经常混进很多和项目无关的工具包,要是想只导出项目实际用到的依赖,可以用pipreqs扫描代码里的import语句生成清单:- 安装工具:
pip install pipreqs - 生成无版本锁定的依赖文件:
pipreqs --no-pin --force . - 如果需要统一成你要的
==*格式,再跑一遍上面的sed替换命令就可以。
- 安装工具:
额外提示
pip的依赖解析规则里,pandas==*和直接写pandas不标注版本的效果完全相同,安装时都会拉取源内最新的可用版本,要是你没有强制要求必须带==*后缀,直接用无版本号的依赖清单也能实现依赖保持更新的效果。
你也可以直接把安装逻辑写到.gitpod.yml的初始化任务里,每次启动工作区自动拉取最新版依赖,不用每次手动生成requirements.txt文件。
内容的提问来源于stack exchange,提问作者Santiago Ruiz Zuluaga
相关产品推荐
相关产品推荐

