Python 如何在vs代码中禁用pylint未使用的导入错误消息

Python 如何在vs代码中禁用pylint未使用的导入错误消息,python,visual-studio-code,pylint,Python,Visual Studio Code,Pylint,如何禁止这些错误消息在vs代码的问题框中弹出 在VS代码设置中(CTRL+逗号) 欲了解更多想法: 您还可以按消息类型禁用,例如,--disable=W 一个很好的参考是,有一个消息ID和消息类型的列表。正如其他人所说,您可以提供一个disable参数来禁用特定消息。我想详细说明一下 以下是禁用多条消息和提供多个参数的语法,我在谷歌搜索时没有立即发现: "python.linting.pylintArgs": [ "--max-line-length=80", "--disabl

如何禁止这些错误消息在vs代码的问题框中弹出

在VS代码设置中(CTRL+逗号

欲了解更多想法:

您还可以按消息类型禁用,例如,
--disable=W


一个很好的参考是,有一个消息ID和消息类型的列表。

正如其他人所说,您可以提供一个disable参数来禁用特定消息。我想详细说明一下

  • 以下是禁用多条消息和提供多个参数的语法,我在谷歌搜索时没有立即发现:

    "python.linting.pylintArgs": [
        "--max-line-length=80",
        "--disable=W0142,W0403,W0613,W0232,R0903,R0913,C0103,R0914,C0304,F0401,W0402,E1101,W0614,C0111,C0301"
    ]
    
  • 您表示,一旦禁用了一条消息,您就开始看到更多错误。根据以下事实,这可能是有意义的:

    VisualStudio代码中的Python默认配置为使用一组 对最大数量的Python友好的linting规则 开发商:

    • 启用所有错误(E)和致命(F)消息
    • 禁用所有约定(C)和重构(R)消息
    • 禁用所有警告(W)消息,但以下消息除外:
      • 不可访问(W0101):不可访问代码
      • 重复键(W0109):字典中的重复键%r
      • 不必要分号(W0301):不必要分号
      • 全局变量未赋值(W0602):对%r使用全局变量,但未完成赋值
      • 未使用的变量(W0612):未使用的变量%r
      • 二进制操作异常(W0711):要捕获的异常是二进制“%s”操作的结果
      • 错误格式字符串(W1302):无效格式字符串
      • 字符串中的异常反斜杠(W1401):字符串中的异常反斜杠
      • 错误的打开模式(W1501):“%s”不是打开的有效模式

    这些规则通过传递给Pylint的以下默认参数应用:

    只要
    python.linting.myImalCheckers
    设置为
    true
    (默认值)。 如果在
    pylintArgs
    中指定值或使用Pylint配置 文件(请参阅下一节),然后将 隐式设置为
    false

    换句话说,在VS代码中,PyLint默认情况下相当松散,只显示错误消息和一些精选的警告。但是当您手动将
    pylintArgs
    设置为某个值时,
    pylintUseMinimalCheckers
    将被忽略,从而打开所有消息的闸门。这可能就是为什么禁用一条消息会导致显示更多消息的方式。再说一次,我不知道为什么您首先会看到未使用的导入消息,因为根据文档,默认情况下它应该被抑制

  • 事实上,这目前不起作用:
    python.linting.pylintUseMinimalCheckers”:true
    (对于我来说,在这个特定的时刻,但希望它对你很好,未来的读者).为了获得相同的效果,我必须手动将
    pylintArgs
    设置为它应该自动设置的值:

    "python.linting.pylintArgs": [
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode"
    ]
    
  • 奖励:下面是我使用的禁用消息列表的说明,如上文第1点所示。它主要来自:


  • 对于simple test.py,我没有修改设置,而是只应用于我使用的那个文件 #pylint:disable=W0614 将这一行放在文件顶部,pylint会自动识别它

    这消除了100个未使用的导入警告

    你可以继续这样禁用

    # pylint: disable=missing-module-docstring
    # pylint: disable=missing-class-docstring
    # pylint: disable=missing-function-docstring
    # pylint: disable=wildcard-import
    # pylint: disable=W0614
    

    将下面的内容添加到文件顶部的行将删除错误…如果是,请确保程序中的行重复删除它

     # pylint: disable=unused-wildcard-import, method-hidden
     # pylint: enable=too-many-lines
    

    参考资料:

    不要使用通配符导入,
    从x导入*
    可能会导致难以检测的问题。最好只导入x,然后使用
    x.Name
    。如果
    x
    非常大,则使用
    as
    缩短它,例如
    导入numpy as np
    。如果对象数量有限,则导入它们明确地说,例如,从x导入A、B、C的
    ,它似乎不起作用。我现在看到500多个以前没有看到的警告。我认为它禁用了所有其他参数。请注意,pylinArgs以前是空的。链接已失效。这里有一个替代方案:它似乎不再起作用。我现在看到500多个以前没有看到的警告。我认为它禁用了s所有其他参数。请注意,pylinArgs以前是空的。我认为这应该是可以接受的答案。您不仅给出了禁用警告和错误消息的答案,还给出了禁用后他们可能会看到500多条消息的原因。此处提供了完整的代码列表:。请尝试放置
    python.linting.PylIntuiSeminimalcheckers“:在您的应用程序中的自定义pylint设置后为true
    json@nonein文件名为“settings.json”。要打开它,请转到文件>首选项>设置,并单击右上角的按钮,当您将鼠标悬停在该文件上时,该按钮会显示“打开设置(json)”。
    "python.linting.pylintArgs": [
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode"
    ]
    
    # Disabled messages
    #    Pointless
    #       W0142 = *args and **kwargs support
    #       W0403 = Relative imports
    #       W0613 = Unused argument
    #       W0232 = Class has no __init__ method
    #       R0903 = Too few public methods
    #       R0913 = Too many arguments
    #       C0103 = Invalid name
    #       R0914 = Too many local variables
    #       C0304 = Final newline missing
    #
    #    PyLint's module importation is unreliable
    #       F0401 = Unable to import module
    #       W0402 = Uses of a deprecated module
    #       E1101 = Module x has no y member
    #
    #    Already an error when wildcard imports are used
    #       W0614 = Unused import from wildcard
    #
    #    Stricter messages that can be disabled until everything else has been fixed
    #       C0111 = Missing docstring
    #       C0301 = Line too long
    
    # pylint: disable=missing-module-docstring
    # pylint: disable=missing-class-docstring
    # pylint: disable=missing-function-docstring
    # pylint: disable=wildcard-import
    # pylint: disable=W0614
    
     # pylint: disable=unused-wildcard-import, method-hidden
     # pylint: enable=too-many-lines