在vscode中使用Prettier时设置python格式时出现问题

2024-06-11 07:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在vscode中,我想使用Prettier作为默认的格式化程序,但在Python中,我不想使用autopep8。我现在有以下设置:

{
  "workbench.iconTheme": "vscode-icons",
  "workbench.editorAssociations": [
    {
      "viewType": "jupyter.notebook.ipynb",
      "filenamePattern": "*.ipynb"
    }
  ],
  "git.confirmSync": false,
  "editor.formatOnPaste": true,
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "python.formatting.provider": "autopep8",
  "explorer.confirmDelete": false,
  "python.showStartPage": false,
  "explorer.confirmDragAndDrop": false
}

当我保存一个python文件时,它会给我一条信息:“扩展名‘Pretier-code formatter不能格式化等等’。因此,显然它仍然对python文件使用了错误的格式化程序。我该如何更改它


Tags: 文件程序falsetruevscodeeditoriconsipynb
3条回答

在VSCode中,Python的“Formatting”由Python扩展提供。因此,对于Python,请使用Python扩展中的格式(例如:autope8),以避免使用重复的格式设置,使其无法工作

enter image description here

参考:Formatting

你可以做@round\u circle所做的事情,因为这应该是可行的。如果您不想设置初始提供程序,例如您可能想使用黑色,您还可以将其添加到settings.json中:

"[python]": {
    "editor.defaultFormatter": null
  },

我碰巧使用的是Microsoft的Python扩展,默认为autoPep8,这将提示您设置要使用的格式化程序photo of the prompt to add formatter然后可以通过添加以下内容在settings.json中添加提供程序:

"python.formatting.provider": <your_formatter>

这里也可以引用:VS Code Formatting

如果我禁用Prettier作为默认格式化程序,它将不再在保存时格式化,但我的Python将在保存时由autopep8格式化。考虑到这一点,以下解决方案对我来说非常有用,它既可以让Prettier用于其他语言,也可以让autopep8用于Python:

{
  "workbench.iconTheme": "vscode-icons",
  "workbench.editorAssociations": [
    {
      "viewType": "jupyter.notebook.ipynb",
      "filenamePattern": "*.ipynb"
    }
  ],
  "git.confirmSync": false,
  "editor.formatOnPaste": true,
  "editor.formatOnSave": true,
  "python.formatting.provider": "autopep8",
  "explorer.confirmDelete": false,
  "python.showStartPage": false,
  "explorer.confirmDragAndDrop": false,
  "python.linting.pylintArgs": ["--load-plugins=pylint_django"],
  "javascript.updateImportsOnFileMove.enabled": "always",
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[python]": {
    "editor.defaultFormatter": "ms-python.python"
  }
}

如果有人找到更好的解决方案,请告诉我

相关问题 更多 >