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

如何在Poetry项目中添加针对指定目录运行Black格式化工具的脚本?

如何在Poetry项目中添加针对指定目录运行Black格式化工具的脚本?

首先咱们拆解下你遇到的两个核心问题:脚本配置的语法错误,以及未安装脚本的警告,然后一步步解决它们。

为什么原来的写法会报错?

Poetry的[tool.poetry.scripts]字段是用来定义Python入口点的,格式必须是模块路径:函数名。你直接在后面追加scripts/**/*.py参数,Poetry会把它当成Python代码的一部分解析,自然就出现语法错误了——它误以为你要给main函数传参,但写法完全不符合Python语法规范。

解决方案一:封装Python脚本(跨平台推荐)

这是最稳妥的方式,通过一个小脚本封装Black的调用逻辑,自动传入指定目录的参数:

  1. 在项目根目录创建scripts文件夹(如果没有的话),然后新建format.py文件,内容如下:
import sys
from black import main as black_main

def main():
    # 将目标目录路径添加到命令行参数列表
    sys.argv.append("scripts/**/*.py")
    # 调用Black的主函数
    black_main()
  1. 修改pyproject.toml里的脚本配置,指向这个新的入口:
[tool.poetry.scripts]
format-scripts = "scripts.format:main"
  1. 运行poetry install,把这个脚本正式安装到虚拟环境中——这一步是解决警告的关键。

完成后,你只需要执行poetry run format-scripts,就能自动用Black格式化scripts/**/*.py路径下的所有Python文件了。

解决方案二:直接调用Shell命令(仅适合类Unix系统)

如果不想额外写Python脚本,也可以直接在Poetry脚本里调用Shell命令,但这种方式在Windows系统上可能存在兼容性问题:

[tool.poetry.scripts]
format-scripts = "bash -c 'black scripts/**/*.py'"

同样,运行poetry install后,执行poetry run format-scripts就能生效。

关于警告的说明

你之前看到的警告,本质是因为没有通过poetry install把脚本安装到虚拟环境的可执行路径中。Poetry明确提示,未来版本会移除直接运行未安装脚本的支持,所以只要执行poetry install完成脚本安装,警告就会彻底消失。

备注:内容来源于stack exchange,提问作者Paul Razvan Berg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:34:36