pylint无法识别某些标准库

时间:2009-08-22 16:19:08

标签: python email import pydev pylint

我正在使用pylint + pydev,python 2.6。 我有一个只有这行代码的模块

from email import Message

现在,当我尝试运行此模块时,它运行正常。但是pylint报告错误:

ID: E0611 No name 'Message' in module 'email'

虽然它存在...... 知道为什么吗?

3 个答案:

答案 0 :(得分:15)

意识到这是一个古老的问题,但正确的答案是,使用Richie描述的“导入hackery”的旧方法调用所需的内容,早已被弃用(尽管仍然出现在许多教程中)。如果您使用新的方式,您将编写更好的代码,pylint不会抱怨。

e.g。

from email import Message
from email import Header
from email.MIMEText import MIMEText

应该是

from email.message import Message
from email.header import Header
from email.mime.text import MIMEText

答案 1 :(得分:11)

我喜欢pylint,但我确实发现我必须使用大量的# pylint: disable-msg=E0611之类的东西才能让它在完全正确但混淆的情况下闭嘴(例如,就像在这种情况下,到期一样) email使用导入技巧。

答案 2 :(得分:1)

email模块使用了一些可怕的导入hackery,这在过去一直困扰着我。你可以这样做:

>>> from email import Message

但你不能这样做:

>>> import email
>>> email.Message
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'module' object has no attribute 'Message'

我意识到这对于使pylint工作没有多大帮助,但它可能有助于解释这个问题。