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

集成pytest后pre-commit中Black格式化工具执行失败的问题求助

解决pre-commit中Black格式化工具的报错问题

嘿,我来帮你搞定这个Black钩子的报错问题!

问题原因

你在Black的钩子配置里加了always_run: true,这个参数会强制pre-commit不管有没有Python文件变更,都要执行Black。但Black本身是需要指定要格式化的文件或代码内容的——当你提交的内容里没有任何Python文件时,Black拿不到任何处理目标,自然就抛出了One of 'SRC' or 'code' is required的错误。

解决方案

根据你的实际需求,有两种靠谱的处理方式:

方式一:移除always_run: true(推荐)

这是最贴合pre-commit设计逻辑的做法,只有当有Python文件被修改提交时,才会触发Black格式化。修改你的Black钩子配置如下:

- repo: https://github.com/psf/black
  rev: 21.12b0
  hooks:
  - id: black
    name: black
    entry: black
    language: system
    require_serial: true
    types: [python]
    # 删除掉always_run: true这一行

这样一来,当你提交的内容里没有Python文件时,Black会自动跳过,不会再报错。

方式二:保留always_run: true但指定默认处理目标

如果你确实需要每次提交都强制检查整个项目的Python文件,可以修改entry参数,同时加上pass_filenames: false来告诉pre-commit不要传递变更文件名,而是用我们指定的目标:

- repo: https://github.com/psf/black
  rev: 21.12b0
  hooks:
  - id: black
    name: black
    entry: black .  # 用`.`指定处理当前目录下所有匹配的Python文件
    language: system
    require_serial: true
    types: [python]
    always_run: true
    pass_filenames: false  # 必须加上这个,避免pre-commit传递空的文件名列表

验证修改

修改完配置后,记得重新安装钩子让配置生效:

pre-commit install --install-hooks

之后再执行提交命令就不会再遇到这个错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:07:35