vscode 的 Python 黑色格式化程序不格式化

Vec*_*rXY 15 visual-studio-code python-black

我尝试在 Ubuntu 20.04 上的 VS Code 上使用black 作为 Python 的格式化程序,但它无法自动保存。

我已经选择blackPython>Formatting:Provider. 我使用 prettier 作为默认格式化程序,为其添加了 .prettierignore、禁用并卸载,以确保它不会干扰黑色。我还添加了自定义路径./local/bin/black。当我通过终端运行它时它可以工作。我该如何让它发挥作用?

{
  editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "python.formatting.provider": "black",
  "python.formatting.blackArgs": [
    "-l 120"
  ],
  "editor.formatOnType": true,
  "python.formatting.blackPath": "./local/bin/black"
}
Run Code Online (Sandbox Code Playgroud)

Gin*_*pin 15

作为 VS Code 上的格式化程序,您只需进行black一些设置即可。看来您大部分内容都是正确的,但我对使用相对路径表示怀疑blackPath(如果路径确实不正确,VS Code 应该显示错误)。

我建议切换到绝对路径。

这是我的设置:

// User Settings

"editor.defaultFormatter": null,
"editor.formatOnSave": false,  // enable per language
"[python]": {
    "editor.formatOnSave": true
},
"python.formatting.provider": "black",
"python.formatting.blackPath": "/usr/local/bin/black"

// Workspace Settings

"python.formatting.blackPath": "/absolute/path/to/venv/with/black",
"python.formatting.blackArgs": [
    "-l 120"
],
Run Code Online (Sandbox Code Playgroud)

首先,我建议删除该editor.defaultFormatter设置(或者将其设置回默认值null)。不要为所有内容设置默认值,而是为每种语言和每个扩展配置格式化程序。在这里,null我配置python特定的设置,然后我为其他语言(例如 JS 和 C++)设置单独的设置。您提到了一些有关 Prettier 的内容,这可能会干扰使用黑色的 VS Code。

其次,确保您修改的是正确的设置。VS Code 有3 组设置用户工作空间文件夹。我通常在用户formatOnSave设置中启用Python ,并将其设置为(使用系统范围内安装的)。在特定的工作区中,我有一个虚拟环境,并且我将其覆盖为专门安装在该虚拟环境上的环境。您还可以将所有设置放在用户设置中或使用相同的系统范围内安装的. 但这里的要点是对两者都使用绝对路径(基本上是从控制台复制输出)。providerblackblackblackPathblackblackwhich black

请注意,如果您指定blackPath指向特定虚拟环境,请确保在工作区上选择相同的虚拟环境。

最后,您可以从“输出”选项卡 > Python 检查是否存在任何问题:

VS Code 输出截图