是否可以忽略带有pylint的单个特定行?


150

标头中包含以下行:

import config.logging_settings

这实际上改变了我的python日志记录设置,但是pylint认为这是未使用的导入。我一般不希望删除unused-import警告,因此可以忽略这一行吗?

我不介意.pylintrc为此项目准备一个,因此更改配置文件的答案将被接受。

否则,这样的事情也将不胜感激:

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

Answers:


227

Pylint信息控件记录在Pylint手册中

是否可以在本地禁用特定消息?

是的,此功能已在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

该手册还有更多示例

一个Wiki,记录所有pylint消息及其代码。


我喜欢片状# noqa。我不想在代码中看到太多注释。# nolint会更加清晰。
尼尔斯·林德曼

61
import config.logging_settings # pylint: disable=W0611

这很简单,并且专门针对该行。

正如sthenault所指出的那样,您可以并且应该使用更具可读性的形式:

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

您从哪里获得消息显式符号?我的短毛猫(间谍中的那个)没有举报,在jomo的答案中链接的wiki也没有列出。
Joooeey

你的意思是unused-import?我认为当我使用W0611时,我的短绒棉给了我警告,但警告时间超过3年,所以我不记得了:/对不起
Unfun Cat

4

我相信您正在寻找的是...

import config.logging_settings  # @UnusedImport

注意注释前的双倍空格,以免出现其他格式警告。

另外,根据您的IDE(如果使用的是IDE),可能有一个选项可以添加正确的忽略规则(例如,Ctrl1在光标悬停时按eclipse键,警告将自动建议@UnusedImport


2
这可能适用于某些IDE,但不适用于 emacs/flycheck。谢谢。请保留答案,因为它可能会对其他人有所帮助。
Unfun Cat

在运行pylintflake8从命令行运行时,此功能不起作用。
雅各布·汤姆林森

@JacobTomlinson有趣,谢谢。这是Pydev接受的,给我的印象是pyclipse只是炮轰了pylint。必须稍微进行自定义,否则eclipse可能正在处理这些指令并禁止输出。
2016年

4

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

1
您可以在文档中
Esteban

谢谢,这比检查源代码要好得多。我为pylint文档找到了两个镜像。显然,readthedoc是官方的镜子。另一个是pylint.org
loxaxs,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.