是否可以忽略 Pylint 的一个特定行?

Is it possible to ignore one single specific line with Pylint?

我的 header 中有以下行:

import config.logging_settings

这实际上改变了我的 Python 日志记录设置,但 Pylint 认为这是一个未使用的导入。我一般不想删除 unused-import 警告,所以是否可以忽略这一特定行?

我不介意为这个项目提供 .pylintrc,所以更改配置文件的答案将被接受。

否则,这样的东西也将受到赞赏:

import config.logging_settings # pylint: disable-this-line-in-some-way

我相信你正在寻找...

import config.logging_settings  # @UnusedImport

注意注释前的双 space 以避免遇到其他格式警告。

此外,根据您的 IDE(如果您使用的是一个),可能有一个选项可以添加正确的忽略规则(例如,在 Eclipse 中,按 Ctrl + 1, 当光标在警告上时,会自动提示 @UnusedImport).

import config.logging_settings # pylint: disable=W0611

这很简单,并且特定于该行。

您可以而且应该使用更易读的形式:

import config.logging_settings # pylint: disable=unused-import

Pylint 消息控件记录在 the Pylint manual:

Is it possible to locally disable a particular message?

是的,此功能已添加到 Pylint 0.11 中。这可以通过添加 # pylint: disable=some-message,another-one 在所需的块级别或所需代码行的末尾。

您可以使用消息代码或符号名称。

例如,

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

说明书还有further examples.

a wiki 记录了所有 Pylint 消息及其代码。

签出 https://github.com/PyCQA/pylint/tree/master/pylint/checkers 中的文件。我还没有找到比 Ctrl + F-ing 这些文件或使用 GitHub 搜索功能:

如果消息是“模块中没有名称...”,请使用搜索:

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

或者,要获得更少的结果:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

GitHub 会告诉你:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

然后你可以这样做:

from collections import Sequence # pylint: disable=no-name-in-module

除了接受的答案:

您可以重新启用错误检查添加 pylint: enable:SPECIFIC_ERROR

例如,我的代码中有这个:

import time
import datetime
import os
import sys
# pylint: disable=import-error
import serial
# pylint: enable=import-error

这样您就可以忽略一行中的单个错误,而不必在整个文件中禁用检查该错误