VS Code Python + Black格式化程序参数 - python.formatting.blackArgs

52
我正在Windows上使用VS Code 1.23.1,Python 3.6通过Anaconda,并安装了来自conda-forge的Black到我的conda环境中。我使用2018年5月发布的Python扩展(在2018年6月发布)。在我的用户settings.json文件中,我有以下内容:
"python.formatting.blackArgs": [
    "--line-length 80"
],

我认为这应该是在VS Code中传递参数给Python格式化工具black的正确方式。

然而,在我的Python输出窗格中,我得到了以下内容:

Formatting with black failed.
Error: Error: no such option: --line-length 80
编辑:如果我将我的settings.json编辑为没有参数的形式,例如:
"python.formatting.blackArgs": [],

黑色正常工作。

有人知道如何正确地传递参数给新的(截至2018年6月)黑色格式化程序吗?


1
你需要使用"--line-length=80"而不是"--line-length 80",注意等号。 - Mark
1
感谢@Mark!对此,看起来已接受的答案已被编辑以匹配当前VS Code设置的操作方式。感谢@He3lixxx帮助编辑并保持已接受的答案的相关性。这方面的旧信息也在已接受的答案的评论中。 - Rafael Zayas
5个回答

86

问题在于您需要在版本1.38.1及以上的--line-length之后使用=80而不是80

--line-length=80  

输入图像描述


1
谢谢Pavel - 鉴于VS Code设置的变化,我相信这个答案现在是正确的,尽管之前正确的答案有更多的赞,因为它已经正确了一年。 - Rafael Zayas
@RafaelZayas [需要引用来源] 关于 VS Code 设置已更改的说法。这个答案是等效的,它使用 GUI 而非直接编辑 settings.json 文件来进行设置。 - Keith Devens
1
@KeithDevens 我认为VS Code的使用体验已经改变,现在GUI是与设置交互的最常见方式。甚至在黑色格式化程序设置中也没有提示“在settings.json中编辑”,就像其他一些设置那样。我认为最合适的做法是更改接受的答案以匹配当前VS Code设置的编辑状态,而不是问题提出时的设置。 - Rafael Zayas
你说得对。如果我在我的VS Code版本中找到了一种简单的方法来编辑JSON文件,我就不会在这里发布它。如果有人知道如何以老式方式编辑设置,我很乐意将这个信息添加到我的答案中。 - Pavel Hanpari
1
适用于2020年9月28日的“VS Code 1.49.2”和“black-20.8b1”。非常感谢! - Vega
参考:在 settings.json 中,现在的设置为 "black-formatter.args": ["--line-length=80"](截至2023年)。 - F.D.Castel

22

格式化程序特定设置的示例显示以下内容:

"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 20}"]

那么请尝试:

"python.formatting.blackArgs": ["--line-length", "80"]

你确定这是 Black 的正确格式吗?对我来说似乎不起作用。 - Wessi
3
我刚刚针对不同的行长测试了以下设置,并且它有效:"python.formatting.blackArgs": ["-S", "--line-length", "80"]请问您正在使用最新版本的 1. VSCode,2. Python 扩展程序,3. Black 吗? - Keith Devens
这个对我有用: "python.formatting.blackArgs": ["--line-length=119"] ... 其他选项都没有。 - Lovato
我最初将此答案标记为正确。然而,由于VS Code Python扩展参数最近发生了变化,我认为现在下面列出的答案是正确的,我已经将其标记为答案。 - Rafael Zayas
@RafaelZayas [需要引用来源] 关于 VS Code 设置被更改的问题。这个答案仍然有效(试一下)。另一个答案只是使用 GUI 来设置该设置。 - Keith Devens
根据文档维护者之一的说法,这是正确的答案。 - Andreas Haferburg

9

这正是我在寻找的! - Shan Dou

5

我的设置是: "python.formatting.blackArgs": ["--line-length=110"] 并且它正常工作。 你的用户settings.json中缺少等号。


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Mihai Chelaru
感谢您的指导,@MihaiChelaru。我编辑了答案以直接进入重点。 - DarkJediNinja
嗨,DarkJediNinja - 我一直在使用Keith指示的设置,并根据VS Code设置文档,我认为这与其他格式设置的工作方式最一致。但我也会点赞这个问题,因为如果我卡在命令行类型的设置上,我会尝试使用单字符串加等号的技巧。 - Rafael Zayas

3
希望最新的VSCode和Black的答案能帮到你:
使用VsCode Insiders(1.83.0-insider)和从扩展中安装的Black(v2023.4.1),从扩展中安装(https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter
我不得不将-l--line-length80作为单独的项目添加到文件->首选项->设置->[类型]black->Black-formatter: Args->添加项目
在用户设置json中(Ctrl + Shift + P -> 打开用户设置),我有:
"black-formatter.args": ["--line-length", "80"]

如果这个方法不起作用,可以在输出窗口中找到有用的信息(您可以选择黑色格式化程序)来查看来自Black的日志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接