求助:使用yapf无法排除指定目录进行自动格式化
解决Yapf无法排除指定目录的问题
我之前也碰到过类似的情况,尤其是用Yapf 0.21.0这种比较旧的版本时,目录排除的逻辑确实有点“顽固”。结合你的环境(Ubuntu 14.04、Python 2.7虚拟环境),给你几个可行的解决思路:
1. 用明确的相对路径模式试试
旧版本的Yapf对不带前缀的目录匹配支持不太好,你可以给目录路径加上./前缀,同时用**匹配目录下所有内容,命令改成这样:
yapf --in-place --recursive --parallel --exclude './somedir/**' --exclude '*_pb2.py' .
执行前可以先用yapf --list --recursive --exclude './somedir/**' .预览一下哪些文件会被处理,确认目录是否真的被排除了。
2. 换用配置文件来指定排除规则
命令行参数有时候在旧版本里会有解析问题,不如试试用Yapf的配置文件来定义排除规则。比如在项目根目录创建setup.cfg,添加以下内容:
[yapf] exclude = somedir/** exclude = *_pb2.py
然后执行格式化命令时就不用带--exclude参数了:
yapf --in-place --recursive --parallel .
配置文件的解析逻辑更稳定,我之前用这个方法解决过不少旧版本Yapf的排除问题。
3. 升级Yapf到较新版本(如果环境允许)
Yapf 0.21.0是2018年的版本,后续的版本修复了很多关于目录排除的bug。如果你的项目没有严格的版本限制,建议直接升级:
pip install --upgrade yapf
升级后,你最初尝试的--exclude 'somedir'或者--exclude 'somedir/**'应该都能正常生效,不用再折腾各种奇怪的模式了。
内容的提问来源于stack exchange,提问作者tarabyte
相关产品推荐
相关产品推荐

