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

使用formatOnSave时如何让VSCode识别pyproject.toml中black的排除文件配置

根因说明

VSCode调用Black作为文件格式化器时,会将当前待格式化的单个文件的绝对路径直接作为参数传递给Black进程。而Black默认的exclude配置规则,仅作用于命令行传入的路径为目录时的递归扫描结果,对直接传入的单个文件路径不做匹配校验,因此会忽略pyproject.toml中的exclude配置直接执行格式化。而line-length这类全局格式化规则不受调用方式影响,所以可以正常识别。

解决方法

  • 方法1:修改Black配置使用force-exclude规则
    Black 22.10.0及以上版本提供了优先级更高的force-exclude配置项,该规则对直接传入的单个文件也会生效,只需将你的pyproject.toml配置修改如下即可:

    [tool.black]
    force-exclude = 'foo.py'
    # 原有其他配置保留,比如 line-length 等
    

    修改后命令行调用和VSCode保存触发的格式化都会遵循该排除规则。

  • 方法2:给VSCode的Black插件添加调用参数
    如果你不想修改Black全局配置,也可以在VSCode设置中单独给Black添加运行参数:

    1. 打开VSCode设置(快捷键Ctrl+,/Cmd+,),搜索Black Formatter: Args
    2. 添加配置项:--force-exclude=foo.py
      也可以直接编辑.vscode/settings.json文件添加以下内容:
    "python.formatting.blackArgs": ["--force-exclude", "foo.py"]
    
  • 方法3:直接在VSCode中配置保存时忽略对应文件
    如果你不需要Black以外的格式化器处理该文件,可以直接配置VSCode保存时不对该文件触发格式化:
    在.vscode/settings.json中添加:

    "editor.formatOnSaveExclude": {
        "**/foo.py": true
    }
    

    该配置优先级最高,保存foo.py时不会触发任何格式化操作。

内容的提问来源于stack exchange,提问作者frankundfrei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:57:01