Visual Studio Code > Python > Black格式化无法在保存时运行

15
虽然我似乎已经正确配置了代码检查和格式化,但是代码检查可以正常运行,但黑色格式化无法运行。
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--max-line-length=110"
    ],
    "python.linting.lintOnSave": true,
    "python.formatting.provider": "black",
    "python.formatting.blackPath": "/usr/local/bin/black",
    "python.formatting.blackArgs": [
        "--line-length",
        "110"
    ],
    "editor.formatOnSave": true,

我已经检查过了,黑色格式化程序已经正确配置,我可以在命令行上运行格式化而没有出现问题。

但是,当在IDE中保存时,黑色不会对文件进行格式化。它也没有投诉,没有弹出错误消息,日志中也没有任何显示。它根本就没有运行格式化。

我正在使用远程编辑在docker容器中运行: 不确定是否有影响。

黑色的版本号是:

black>=19.3b0

而且 vscode 的版本是 1.36.1

非常感谢任何帮助,因为现在我对为什么黑色格式化无法运行感到相当困惑...


什么是black8?Python支持black,但不支持任何名为black8的工具。另外,您是否检查了输出面板以查看是否有任何错误日志记录? - Brett Cannon
black8只是一个输错的字,配置正确地引用了black。而且,任何输出面板都没有显示任何内容。 - mugwump
@mugwump 你所说的“远程编辑”是什么意思?你是否在使用 VS Code 的 Remote-Container 扩展? - Brett Cannon
是的,我正在容器中运行一个Django应用程序,并使用VSCode的远程编辑功能在该容器内进行编辑。 - mugwump
4个回答

7

晚回答,希望能够帮到任何人。我遇到了同样的问题并通过以下方式解决了它

我需要在用户设置.json中加入这一行:

"editor.defaultFormatter": "ms-python.python"

否则,我猜,格式会被我的默认格式选项覆盖, 我的默认格式选项是:

"editor.defaultFormatter": "esbenp.prettier-vscode",

所以,我整体的与格式相关的设置如下:

"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
  "[python]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "ms-python.python"
  },
  "[javascript]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },

  "python.formatting.provider": "black",
  "python.formatting.blackPath": "/home/<user>/anaconda3/bin/black",

这行代码 "editor.defaultFormatter": "ms-python.python" 也可以通过以下方法从 VS-Code 命令面板(Ctrl + shift + P)中激活:

使用 > 配置默认格式化程序 > 选择 Python 格式化


7

0
但这里有一个猜测:我手动从命令行使用sudo启动了dockerd:这给了我各种奇怪的问题(例如在容器内创建的文件,如迁移或缓存文件最终被root拥有)。我最近将dockerd移动到了服务中,现在黑色突然在保存时运行。罪恶的根源可能是权限问题,这是因为dockerd是以sudo而不是作为服务运行的。

0
我添加了 blackPath: "python.formatting.provider": "black", "python.formatting.blackPath": "C:/conda/Scripts/black.exe", 并解决了这个问题。
我使用 Miniconda。

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