Formatter black 在我的 VSCode 上不起作用...但为什么呢?

Formatter black is not working on my VSCode...but why?

我已经开始使用 Python 和 Django,我是这个领域的新手。 这是我第一次在这里提问...如果有解决此问题的已知方法,我会提前道歉...

当我安装并设置 VSCode 格式化程序 'black' 时(在将 linter 设置为 flake8 之后),教程视频导师端显示 'formatter autopep8 is not installed. install?' 的弹出窗口。 & 我的没有显示该消息。

所以我所做的是...

  1. 在终端上手动输入 'pipenv install flack --dev --pre'。
  2. 手动输入“python.formatting.provider”:“黑色”,到“.vscode”文件夹中的 'settings.json'。
  3. Setting(VSCode) -> flake8, Python > Linting: Flake8 Enabled (Also modified in: workspace), (勾选框) 是否使用 lint Python 文件薄片 8

底部代码来自 settings.json(在 vscode 文件夹中)。


{
  "python.linting.pylintEnabled": false,
  "python.linting.flake8Enabled": true,
  "python.linting.enabled": true,
  "python.formatting.provider": "black", # input manually
  "python.linting.flake8Args": ["--max-line-length=88"] # input manually
}


我找到了一份 'black formatter' 文件。 https://github.com/psf/black & 它说... python -m black {source_file_or_directory} & 我收到以下错误消息。


    Usage: __main__.py [OPTIONS] [SRC]...
Try '__main__.py -h' for help.

Error: Invalid value for '[SRC]...': Path '{source_file_or_directory}' does not exist.

是的,老实说,我不确定我应该设置哪个 source_file_or_directory...但最重要的是现在我担心我是否在正确的轨道上。

我能听听你的建议吗?请至少指明方向。 谢谢..

我认为使用黑色的最佳方式是通过终端。您需要做的就是使用以下命令将其安装在终端上的 pip 上:pip install black 然后当它安装好后,你进入终端并输入:black filename.py

整行是:black filepath/file.py 因此,对于位于桌面上的名为 test.py 的文件,如果在 mac 上:黑色 desktop/test.py 如果您想对多个文件执行此操作,而不是对每个文件单独执行此操作。

就像 camab 说的,你完全可以从命令行运行它:

$ black file.py

您还可以 运行 它在 python 个文件的整个文件夹(目录)上:

例如,如果我有:

src/
| - module/
|   | - moduleFile.py
|   \ - __init__.py
|
\ - script.py

和运行

$ black src

它将格式化 moduleFile.py__init__.pyscript.py

就您的 VSCode 配置而言,我也喜欢 settings.json

{
    "editor.formatOnSave": true,
    "python.linting.lintOnSave": true,
}

确保每次我按保存时文件都会被检查和格式化。

如果您在 VSCode 中遇到 linting/formatting 的问题,您可以使用“命令面板”(Ctrl+Shift+P) 强制执行以下命令:

  • Python: 运行 林丁
  • Python: Select 短绒
  • 格式化文件
  • 格式化文档...

如果确实存在问题,应该会产生视觉弹出式错误。

希望这对您有所帮助,祝您编码愉快!

我从内部使用黑色 VSCode,它很不错。它释放了您决定如何格式化代码的思维周期。最好从您最喜欢的编辑器中使用它。如果您需要一次格式化大量文件,只需从命令行 运行。

首先,检查你的 VSCode settings.json 中是否有这个(使用 Ctrl-P + 设置打开它):

"python.formatting.provider": "black",
"editor.formatOnSave": true,

请记住,可能有 2 个 setting.json 文件:一个在您的主目录中,一个在您的项目中 (.vscode/settings.json)。以项目里面的为准

就是说,这类问题通常与使用未安装 black 的 python 解释器有关。我建议使用虚拟环境,但首先检查状态栏上的 python 解释器:

如果您没有明确地 select 解释器,请立即单击状态栏中的 Python 版本。 selected 路径曾经出现在项目的设置文件中:

"python.pythonPath": "Scripts\python.exe",

但我想它不会再出现了。

现在打开终端。由于您 select 编辑了您的解释器,您的虚拟环境应该会被 VSCode 自动激活。 运行 python 使用您的解释器路径并尝试导入黑色:

$ python
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import black
>>> 

导入失败?问题解决了。只需使用来自 venv 的解释器安装 black:python -m pip install black.

还是不行?单击终端的“输出”选项卡,并尝试在“日志”输出中获取更多信息。 Select 在下拉菜单中:

如果您使用的是windows操作系统,那么有一个最简单的解决方案:

  1. 找出你安装黑包的位置。它可以在 AppData/python/scripts
  2. 单击开始菜单并键入 “编辑系统环境变量” 和 select 它。
  3. 现在单击环境变量并双击 'System Variable' 部分的 'path' 进行编辑。
  4. 现在在此处添加包路径,如"Appdata/path/scripts;"

希望现在黑色在每次保存时都能正常工作。

这个解决方案很适合我。

注意:现在您可以从 CLI 使用黑色。

为那些仍然无法解决 vs 代码中的 'black' 格式问题的人附上我的发现。

首先,你必须在全局或本地安装 black(如果你使用像 conda 这样的虚拟环境)

然后,确保您的 vs 设置如下,将 python 默认格式化程序提供程序设置为 'black':

最后,打开你的settings.json你的vs代码,为它添加下面的代码段。

"[python]": {
    "editor.defaultFormatter": null,
    "editor.insertSpaces": true,
    "editor.tabSize": 4,
    "editor.formatOnSave": true
}

重点是:

"editor.defaultFormatter": null

如果你仍然使用"editor.defaultFormatter": "black"那么多旧帖,'black' 格式化程序将无法在较新的 vs 代码中使用。

致所有尝试过的人:)。

黑色在 VSCode 中不起作用,如果你有

  • 语法错误,
  • 一个IPython魔法(例如,%matplotlib inline)。

运行 文件上终端的黑色揭示了这些问题。

我遇到了同样的问题,唯一的解决办法就是删除

   "python.formatting.blackArgs": ["--skip-numeric-underscore-normalization"],  

来自 setting.json。它没有意义,但它有效。

对于看到此内容的人,上述解决方案 none 有效。 如果将黑色路径设置为其绝对位置,则可能会解决问题。

对我来说,问题不是直接变黑,而是它读取以查找配置设置的无效项目设置文件。根本原因未在任何地方记录。

我通过检查选择了 Python 扩展名的 OUTPUT 选项卡找到了原因。它显示 black 被调用,显然没有报告问题:

./.venv/bin/python -m black --diff --quiet ./myfile.py
cwd: .

然而,当我在终端中 运行 执行相同的命令时,我收到了错误报告:

Error: Could not open file './pyproject.toml': Error reading configuration file: Invalid value (at line 18, column 10)

修复此问题后,我可以手动格式化我的代码,format on save 也回来了。

有一个新的扩展,目前 pre-release,用于黑色格式。参见 v1.67 Release Notes, Python Black formatting

来自自述文件 (vscode Marketplace: Black Formatter):

用法

在 Visual Studio 代码中安装后,“Black Formatter”将可用作 python 文件的格式化程序。请 select “Black Formatter”(扩展名 id:ms-python.black-formatter)作为默认格式化程序。您可以通过使用上下文菜单(右键单击编辑器中打开的 python 文件)和 select“格式化文档...”来执行此操作,或者您可以将以下内容添加到您的设置中:

  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter"
  }

保存时格式化

您可以通过在设置中设置以下值来为 python 启用保存格式:

  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true
  }