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

The*_*Cat 118 python pylint

我的标题中有以下行:

import config.logging_settings
Run Code Online (Sandbox Code Playgroud)

这实际上改变了我的python日志设置,但是pylint认为它是一个未使用的导入.我不想删除unused-import一般警告,所以可以忽略这一条特定的行吗?

我不介意有一个.pylintrc这个项目,所以将接受更改配置文件的答案.

否则,这样的事情也将受到赞赏:

import config.logging_settings # pylint: disable-this-line-in-some-way
Run Code Online (Sandbox Code Playgroud)

jom*_*omo 176

Pylint 手册中记录了Pylint消息控制:

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

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

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

手册也有一个例子.

一个wiki记录所有pylint消息及其代码.

  • 我喜欢 [flake8](https://pypi.org/project/flake8/) 的 `# noqa`。我不想在代码中看到这么多注释。`#nolint` 会更清楚。 (9认同)
  • @NilsLindemann 这样做的缺点是您会丢失有关您要避免的消息的信息。您可能会意外地抑制您无意的消息(可能是由于未来版本的更改或其他原因)。 (7认同)
  • @PierceDarragh,如果需要这种精度,可以附加一个或多个错误代码或错误代码类别。例如,在“def foo() :return 1 is 1”中,附加“# noqa: E203”将不会报告“:”之前的空格。附加 `# noqa: E2` 将不会报告任何与空格相关的问题。但使用`is`而不是`==`仍然会被报告。请参阅 [flake8s](https://cutt.ly/ev12uLp) 和 [pycodestyles](https://cutt.ly/Pv12bvm) 错误代码。[更多信息](https://cutt.ly/iv12XN0)。 (3认同)

The*_*Cat 47

import config.logging_settings # pylint: disable=W0611
Run Code Online (Sandbox Code Playgroud)

这很简单,具体针对该行.

正如sthenault所指出的,你可以而且应该使用更易读的形式:

import config.logging_settings # pylint: disable=unused-import
Run Code Online (Sandbox Code Playgroud)

  • 对于最近的pylint版本,更喜欢在id上显示消息显式符号,即:`#pylint:disable = unused-import` (6认同)
  • 您从哪里获得消息显式符号?我的 linter(spyder 中的 linter)没有报告它,jomo 的答案中链接的 wiki 也没有列出它。 (3认同)
  • 此 [Pylint 帮助页面](https://pylint.pycqa.org/en/latest/messages/messages_list.html) 以编码和命名格式列出了所有 Pylint 错误(和警告等)。只需执行“在页面中查找”并搜索代码或名称即可。 (2认同)

Ale*_*ejo 13

除了已接受的答案之外:

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

例如,我的代码中有这样的内容:

import time
import datetime
import os
import sys
# pylint: disable=import-error
import serial
# pylint: enable=import-error
Run Code Online (Sandbox Code Playgroud)

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

  • 将“pylint”注释放在要禁用的行的末尾,而不是单独的一行。然后只对该行生效。 (8认同)
  • 从 pylint 2.10 开始,可以使用 `pylint:disable-next=...` 选项(参见已接受的答案),该选项仅对下一行产生影响。 (5认同)

Bas*_*sic 5

我相信你要找的是......

import config.logging_settings  # @UnusedImport
Run Code Online (Sandbox Code Playgroud)

请注意注释前的双倍空格,以避免遇到其他格式警告.

此外,根据您的IDE(如果您使用的是IDE),可能还有一个选项可以添加正确的忽略规则(例如,Ctrl1在光标结束时按下eclipse 会自动建议@UnusedImport

  • 这可能适用于某些IDE,但不适用于`emacs/flycheck`.谢谢.请保留答案,因为它可能会帮助其他人. (2认同)
  • 从命令行运行“pylint”或“flake8”时,这不起作用。 (2认同)