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

Python black formatter for vscode not formatting

我正在尝试在 Ubuntu 20.04 上的 VS Code 上将 black as a formatter 用于 Python,但它无法自动保存。

我在 Python>Formatting:Provider 中选择了 black。我使用 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"
}

在 VS Code 上,您只需要 setup black as a formatter 一些设置。看来你大部分都做对了,但我对 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"
],

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

其次,确保您正在修改正确的设置。 VS Code 有 3 sets of settingsUserWorkspaceFolder。我通常在 User 设置中为 Python 启用 formatOnSave,并将 provider 设置为 black(使用 system-wide 安装 black)。在特定工作区上,我有一个虚拟环境,我将 blackPath 覆盖为专门安装在该虚拟环境中的 black。您也可以将所有设置放在 User 设置中或使用相同的 system-wide-installed black。但这里的要点是两者都使用绝对路径(基本上从控制台复制 which black 的输出)。

请注意,如果您指定 blackPath 指向特定的虚拟环境,请确保在您的工作区上 select that same virtual environment

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