You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:31:00