10

我已经开始使用 Python 和 Django,我在这个领域非常陌生。这是我第一次在这里提出问题......如果有已知的解决方案,我会提前道歉......

当我安装并设置 VSCode 格式化程序“黑色”(将 linter 设置为 flake8 后)时,教程视频导师的一侧会弹出“格式化程序 autopep8 未安装”之类的弹出窗口。安装?'。&我的没有显示该消息。

所以我所做的是...

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

底部代码来自 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
}


我找到了一个“黑色格式化程序”文档。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 ......但最重要的是,现在我担心我是否走在正确的轨道上。

我能听听你的建议吗?请至少有一个方向。谢谢..

4

8 回答 8

23

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

首先,检查 settings.json 中是否有这个:

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

请记住,可能有 2 个 setting.json 文件:一个在您的主目录中,一个在您的项目 ( .vscode/settings.json) 中。项目内部的占上风。

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

VSCode 状态栏中的 Python 解释器

如果您没有明确选择解释器,请现在单击状态栏中的 Python 版本。所选路径现在将出现在您的设置文件中:

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

现在打开终端。由于您选择了解释器,因此 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: 中的解释器安装黑色即可python -m pip install black

还是行不通?单击 TERMINAL 的“OUTPUT”选项卡兄弟并尝试在“Log”输出中获取更多信息。在下拉菜单中选择它:

vscode的日志输出

于 2021-02-25T11:55:53.097 回答
7

附上我对那些仍然无法解决 vs code 中“黑色”格式问题的人的发现。

首先,您必须在全局或本地安装 black(如果您使用 conda 之类的虚拟环境)

然后,确保您的 vs 设置如下,将 python 默认格式化程序提供程序设置为“黑色”: 在此处输入图像描述

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

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

关键点是:

“editor.defaultFormatter”:空

如果您仍然使用"editor.defaultFormatter": "black"作为许多旧帖子,则 'black' 格式化程序将无法在较新的 vs 代码中工作。

于 2021-10-19T07:44:34.357 回答
3

就像 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:运行 Linting
  • Python:选择 Linter
  • 格式化文件
  • 用...格式化文档

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

希望这对编码有所帮助和快乐!

于 2021-02-05T21:46:37.390 回答
2

对于那些已经尝试过的人:)。

如果您有黑色将无法在 VSCode 中使用

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

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

于 2021-10-21T09:16:11.950 回答
1

我有同样的问题,唯一的治疗方法是去除

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

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

于 2022-01-11T16:34:58.880 回答
0

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

  1. 找出你在哪里安装了黑色包。可以开启AppData/python/scripts
  2. 单击开始菜单并键入“编辑系统环境变量”并选择它。
  3. 现在单击环境变量并双击“系统变量”部分中的“路径”进行编辑。
  4. 现在在此处添加包路径,例如"Appdata/path/scripts;"

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

这个解决方案对我来说很好。

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

于 2021-04-07T22:38:51.867 回答
0

对于那些看到这一点并且上述解决方案都不起作用的人。如果将黑色路径设置为其绝对位置,它可能会解决问题。

在此处输入图像描述

于 2022-02-11T00:07:41.760 回答
-1

在我看来,使用黑色的最好方法是通过终端。您需要做的就是使用以下命令将其安装在终端上的 pip 上: pip install black 然后安装完成后,您进入终端并输入: black filename.py

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

于 2020-12-02T03:21:54.323 回答