Visual Studio Code> Python > 黑色格式在保存时不运行

Ste*_*ank 13 python ide code-formatting visual-studio-code

虽然我似乎已经正确配置了 linitng 和格式,但 linting 运行但黑色格式没有。

    "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,
Run Code Online (Sandbox Code Playgroud)

我已经检查过,黑色配置正确,我可以毫无问题地从命令行运行格式化。

但是在IDE中保存时,black不会格式化文件。它也没有抱怨,没有弹出错误消息,日志中也没有任何显示。它根本不运行格式。

我正在使用远程编辑在 docker-container 中运行它:不确定,如果这有区别。

黑色版本是:

black>=19.3b0
Run Code Online (Sandbox Code Playgroud)

vscode 版本是1.36.1.

感谢您的帮助,因为现在我很无能为力,为什么黑色格式不运行......

Veg*_*ega 5

黑色的行参数是错误的,应该是

--line-length=120
Run Code Online (Sandbox Code Playgroud)

根据/sf/answers/4063423801/


Roh*_*aul 5

迟到的答案,以防它对任何人有帮助。我遇到了同样的问题并如下解决

我需要在用户 settings.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",
Run Code Online (Sandbox Code Playgroud)

该行"editor.defaultFormatter": "ms-python.python"也可以从 VS-Code 命令面板 (Ctrl + shift + P) 中激活,如下所示。

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


mug*_*ump 0

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