pylint报告_不可调用

时间:2012-04-05 09:06:19

标签: python pylint

问题

我已将ugettext_lazy导入为_但是pylint抱怨_不可调用。有没有办法忽略这个错误信息?

from django.utils.translation import ugettext_lazy as _
...
class A(models.Model):
    name = models.CharField(max_length=255, verbose_name=_("Name"))

答案

似乎我找到了一半答案。有一种方法可以忽略某些消息。

[MESSAGES CONTROL]
disable=E1102[,<msg id>]+

获取消息和ID列表:

shell> pylint --list-msgs

为什么只有一半的解决方案?好吧不,它没有报告这样的情况:

asdf = 5
asdf()

也许有办法指定错误原因,但那是另一天:|。

谢谢大家。

4 个答案:

答案 0 :(得分:4)

禁用pylintrc文件中的消息以避免误报肯定不是解决方案,因为它会完全停用此检查。

看一下django的源代码,似乎pylint不喜欢lazy()的东西。 Django人应该阅读http://www.logilab.org/blogentry/78354并启动一个特定于django的插件,这可以很容易地解决这些问题。

答案 1 :(得分:3)

在pylintrc文件中添加以下内容

[VARIABLES]
additional-builtins=_

这会将下划线符号添加到应该在builtins中定义的其他名称列表中,并且pylint不会抱怨它。

答案 2 :(得分:1)

pylint --additional-builtins=_ ...将在大多数情况下完成工作。

答案 3 :(得分:0)

_指的是最后输出的值

所以,这可能是错误原因

>>> 1 + 1
2
>>> print _
2
>>> _("foo")
 TypeError: 'int' object is not callable