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

如何通过pyproject.toml配置Black自动识别Python源码目录?

配置Black实现根目录执行black自动格式化源码目录

问题场景

目录结构如下:

hello
|_ pyproject.toml
|_ hello
    |_main.py

已在pyproject.toml的[tool.black]中配置了include = ['\.pyi?$', 'hello'],当前:

  • 在根目录执行black hello可以正常格式化下层hello目录的代码
  • 进入下层hello目录执行black或black main.py也能正常格式化
  • 但在根目录直接执行black时,会提示:Black使用方法:black [OPTIONS] SRC ... 必须指定'SRC'或代码内容,希望不用在命令行指定路径,直接执行black就能自动格式化下层hello目录的代码。

解决方案

Black的include配置是用来筛选已扫描路径下的文件,而非指定要扫描的根路径,所以仅靠pyproject.toml无法让black命令在无参数时自动指定路径,需要通过以下方式实现需求:

方法1:使用Shell别名(临时/永久)

在终端中设置别名,让black默认执行black hello:

  • 临时生效(当前会话):
    alias black='black hello'
    
  • 永久生效(根据你的Shell类型配置):
    • Bash:编辑~/.bashrc或~/.bash_profile,添加上面的别名行,然后执行source ~/.bashrc生效
    • Zsh:编辑~/.zshrc,添加别名行后执行source ~/.zshrc生效

方法2:通过Poetry脚本包装命令

在pyproject.toml中添加自定义脚本,用poetry run来触发格式化:

[tool.poetry.scripts]
format = "black hello"

配置完成后,在根目录执行:

poetry run format

就能自动格式化下层hello目录的代码,相当于把black hello包装成了一个更简洁的命令。

方法3:直接执行black .(无需额外配置)

你当前的include配置已经生效,在根目录执行black .时,Black会扫描当前目录下的所有内容,然后根据include规则只处理hello目录下的.py/.pyi文件,效果和black hello一致,只是多输入一个.,操作成本也很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:16:16