16

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

from email import Message

现在,当我尝试运行此模块时,它运行良好。但是pylint报错:

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

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

4

3 回答 3

15

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

例如

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

等等

于 2011-06-07T06:53:58.123 回答
12

我喜欢 pylint,但我确实发现我必须使用很多之# pylint: disable-msg=E0611类的东西才能让它在完全正确但混淆它的情况下关闭(例如,就像在这种情况下,由于email's 玩进口技巧) .

于 2009-08-22T18:40:45.847 回答
1

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

>>> 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 工作不是很有帮助,但它可能有助于解释问题。

于 2009-08-22T16:23:25.390 回答