【问题标题】:How do I get PyDev to show pylint errors in the editor?如何让 PyDev 在编辑器中显示 pylint 错误?
【发布时间】:2013-10-04 01:45:55
【问题描述】:

我安装了最新的 PyDev (2.8.2) 和 pylint (1.0.0)。我试图让 pylint 错误和警告出现在 PyDev 编辑器中。当我启用它时,它似乎什么都不做。当我将它设置为将输出重定向到控制台时,它似乎工作正常(见截图)。

我怎样才能让它工作?

【问题讨论】:

  • 您是否在“问题”选项卡中看到 Pylint 错误和警告?他们也应该出现在那里,like this
  • @nofinator 不,我不知道。我有一堆来自 PyDev 本身的错误,但没有一个特定于 Pylint。
  • 你能贴一张你的问题标签的截图吗?
  • @ifx Screenshot

标签: python eclipse pydev pylint


【解决方案1】:

pylint 在 PyDev 中不起作用的原因有很多。

确保 PyLint 已配置

这些选项可以在window -> preferences -> pydev -> pylint找到。

查看use pylint?

对于Location of pylint.py (lint.py):,单击浏览按钮并选择文件。对于 Debian GNU/Linux 上的我来说,它位于 /usr/share/pyshared/pylint/lint.py。如果你在另一个发行版上,你的包管理器应该有办法向你展示与 pylint 包一起安装的文件。通过 grep 搜索 lint.py

如果一切正常,请确认 FATALERRORSWARNINGSCONVENTIONSREFACTOR 严重性未设置为忽略。

点击OK

请稍等,因为 PyDev 可能需要一些时间才能弄清楚 pylint 的内容。然后故意引入一个pylint警告。当 foo 未定义时,类似简单的 foo.bar() 应该会创建一个错误,该错误将在保存文件后显示。

确保您的源文件位于 PYTHONPATH 上

Project -> Properties -> PyDev - PYTHONPATH 下查看Source Folders 选项卡,如果框中没有任何内容,那就是问题。通过Add Source Folder 按钮将您的源目录添加到其中。如果您的代码位于项目的根目录中,只需选择项目目录即可。如果它在另一个文件夹下,请选择它。

注意:您只需要选择代码的根目录,而不是项目中的每个文件夹。

检查你的扩展

确保您正在测试的文件具有 .py 扩展名。 PyDev 不会为任何没有 .py 扩展名的文件调用 pylint。因此,如果您有一个调用/设置脚本调用您的应用程序的其余部分而没有 .py 扩展名,它不会检查它。

【讨论】:

  • 我已经检查了所有这些,并且似乎配置正确。 foo.bar() 确实显示为错误,但 PyDev 无论如何都会这样做,没有启用 PyLint。
  • 如果您将鼠标悬停在红色 x 上,您看到的是 Undefined variable: fooID:E0602 Undefined variable'foo',还是两者都有?如果它是最后两个之一,则 pylint 正在工作。
  • 我只看到常规的 PyDev 消息“未定义变量:foo”
  • 你确定你已经安装了pylint?它不包含在 python 和 pydev 中,必须单独安装。
  • 是的,因此当我让 PyDev 将其输出到控制台时它可以工作
【解决方案2】:

首先确保您已打开自动构建,以便 pylint 在更改后无需额外操作即可工作。 然后检查您没有比在指定要使用 pylint 的最大增量的选项中配置的更改更多。 当然,如果您还没有在问题过滤器中启用 pylint。 认为它必须有帮助。

【讨论】:

  • 您能否更具体地说明要检查哪些设置?我很确定 autobuild 已经启用,因为当我写一些无效的东西时,我会立即收到常规的 PyDev 错误和警告。是的,PyLint 已在问题过滤器中启用。
【解决方案3】:

您的控制台输出显示二进制字符,这可能是文件编码问题。可能是你的 *.py 有 DOS 行结尾,如果是这样转换它们(似乎你的盒子是 Linux 的)

dos2unix <your files>

您也可以在命令行上尝试控制台第一行中的命令。这就是我的控制台的样子

PyLint: Executing command line: /usr/lib/python2.7/site-packages/pylint-1.0.0-py2.7.egg /pylint/lint.py --rcfile=$HOME/.pylintrc test.py
PyLint: The stdout of the command line is: ************* Module updateProgress
C: 14, 0: Line too long (89/80) (line-too-long)
C: 26, 0: Trailing whitespace (trailing-whitespace)
C: 40, 0: Trailing whitespace (trailing-whitespace)
C: 42, 0: Trailing whitespace (trailing-whitespace)

【讨论】:

  • 那些“二进制字符”是 ANSI 控制序列和预期的。
猜你喜欢
  • 2011-10-15
  • 2010-12-14
  • 1970-01-01
  • 2019-09-25
  • 2019-08-07
  • 2016-06-01
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
相关资源
最近更新 更多