VS Code > 首选项 > 用户设置 > 扩展 > Python > Linting > Flake8 Args 添加的项目停止工作

use*_*081 9 python flake8 visual-studio-code

请不要将此视为“提出并回答”的问题。我真诚地一直在努力弄清楚为什么这已经停止工作,如果这是一个 VS Code 问题,或者一个 Flake8 问题,或者如果我只是疯了,应该找到另一种方法来解决这个问题。

在寻找一种方法来阻止 Flake8 linter 的“文件太长”和“未使用”警告时,我找到了一个被列为 StackFlow 上最热门的解决方案之一。我完全复制并粘贴了它,它起作用了!很好,但是在遵循 Django 项目教程时,可以了解 admin.py 文件中的这段代码:

from django.contrib import admin
from .models import Choice, Question


class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]


admin.site.register(Question, QuestionAdmin)

Run Code Online (Sandbox Code Playgroud)

突然,(设置已经工作好几天了),我收到了这个问题警告:行太长(80 > 79 个字符) flake8(E501) (13,80)

我知道我可能对此过于挑剔,但这确实很烦人。我还读到,我可以使用反斜杠来打破行,而不会破坏代码的连续性,但我也尝试过,并收到一条消息,说括号内的反斜杠是多余的。

我返回到设置并检查它们是否仍然与 Args 所建议的实际上一样有效。我删除了更改。我关闭并重新启动 VS Code,返回并再次重新插入设置。仍然遇到相同的错误,我不知道 Flake8 从哪里获取并重现错误消息,其中 80 大于 79 信息。

有谁知道为什么设置突然停止工作并且 flake8 恢复忽略它在设置中被指示忽略的参数?

这是对我不起作用的热门解决方案:VS Code、首选项、用户设置、扩展、Python、Linting、Flake8 Args

"python.linting.flake8Args": [
    "--max-line-length=120",
    "--ignore=E402,F841,F401,E302,E305",
],
Run Code Online (Sandbox Code Playgroud)

我什至尝试将行长度延长到 180 并将 E501 添加到忽略列表中。什么都不起作用。

Jef*_*hen 10

更改文件中的 flake8 设置settings.json,使用"flake8.args":与原始"python.linting.flake8Args":.

由于 VSCode迁移到单独的 Python 工具,这一情况于 2023 年 9 月发生了变化。


Les*_*dge 6

对我有用的是将参数添加到图形 UI 而不是settings.json.

在此输入图像描述


use*_*081 3

这是为了寻找我自己的答案而进行的编辑。我发现,如果我在实际的 settings.json 文件中而不是通过 VS Code 用户设置界面进行建议的编辑,那么编辑实际上会起作用。

我不确定是否可以说仅更改它就足够了,因为在我的研究和搜索中,我偶然发现在虚拟环境文件夹中安装了 flake。我认为无论如何这都是一个好主意,因为我不希望 vscode 使用安装了 flake8 的全局系统,我假设当您安装 vscode flake8 扩展时会发生这种情况。

因此,我首先使用 pip 在我的虚拟环境项目文件夹中安装 flake8。我用 pip freeze 检查过。Flake8 位于虚拟环境的 Windows\Scripts 文件夹中。

然后我在该虚拟环境项目文件夹的 .vscode 文件夹中找到了 settings.json 文件。

我之前所做的一切都不起作用。我尝试了 StackOverflow 上的很多其他建议。当我阅读 Flake8 文档时,我偶然编写了一个 setup.cfg 文件,但无论我将其放在哪里,我都没有得到忽略我想要的警告和错误的结果。

然后我回去重新阅读最初的建议,注意到它提到了两种执行此操作的方法,然后我尝试编辑 settings.json 文件。如果有人可以添加解释,我仍然会很感激,但就我而言,我已经找到了满意的答案。这是一次很棒的学习经历。