9

我正在尝试在 Ubuntu 20.04 上的 VS Code 上使用黑色作为 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"
}
4

1 回答 1

9

您只需要在 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"
],

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

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

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

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

在此处输入图像描述

于 2021-03-20T02:19:41.890 回答