【问题标题】:Formatter black is not working on my VSCode...but why?格式化程序黑色不适用于我的 VSCode ......但为什么?
【发布时间】:2021-03-14 00:29:22
【问题描述】:

我已经开始使用 Python 和 Django,而且我在这个领域还很陌生。 这是我第一次在这里提问……如果有已知的解决方案,我会提前道歉……

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

所以我所做的是......

  1. 在终端上手动输入“pipenv install flack --dev --pre”。
  2. 手动输入“python.formatting.provider”:“black”,到“.vscode”文件夹的“settings.json”。
  3. Setting(VSCode) -> flake8, Python > Linting: Flake8 Enabled(也在: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...但最重要的是现在我担心我是否走在正确的轨道上。

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

【问题讨论】:

  • 哇...我想现在我部分地看到了每个帖子在这里的进展情况。谢谢大家的帮助!保持安全!

标签: python visual-studio-code python-black


【解决方案1】:

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

如果你有黑色将无法在 VSCode 中工作

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

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

【讨论】:

    【解决方案2】:

    附上我的发现,供那些仍然无法解决 vs 代码中的“黑色”格式问题的人使用。

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

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

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

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

    重点是:

    "editor.defaultFormatter": null

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

    【讨论】:

    • 这个对我有用,谢谢!
    【解决方案3】:

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

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

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

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

    也就是说,这类问题通常与使用未安装 black 的 python 解释器有关。我推荐使用虚拟环境,但首先在状态栏上检查你的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 的解释器安装 black:python -m pip install black

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

    【讨论】:

    • 抱歉回复晚了。你甚至向我展示了一个更好的选择!非常感谢您,注意安全!
    • 另外可能值得注意的是:安装和配置黑色后,我发现我必须将文件保存到磁盘 - 你不能只是将代码的 sn-p 复制/粘贴到 VSCode 中并格式化(并不完全令人惊讶,尽管如果 VSCode 可以通过创建一个临时文件来处理它会很好,或者我喜欢 VSCode 的比较,比如并排查看两个复杂的字典)
    • 对我来说,检查 OUTPUT "Python" 日志很有用。调用“格式化文档”时,“日志(主)”不包含任何信息。
    【解决方案4】:

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

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

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

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

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

    【讨论】:

    • 感谢您回答这个问题!保持安全!
    【解决方案5】:

    就像 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,
    }
    

    以确保每次我按保存时,文件都会被 linted 和格式化。

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

    • Python:运行 Linting
    • Python:选择 Linter
    • 格式化文档
    • 使用...格式化文档

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

    希望这对编码有所帮助!

    【讨论】:

    • 感谢您回答我的问题!保持安全!
    【解决方案6】:

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

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

    【讨论】:

    • 它工作......!天哪,它有效!我什至没有想过将格式化程序应用于每个单独的文件。你真的把我从绝望中救了出来!非常感谢!!!!上帝保佑你!
    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多