我正在使用 pylint + pydev,带有 python 2.6。我有一个只有这行代码的模块
from email import Message
现在,当我尝试运行此模块时,它运行良好。但是pylint报错:
ID: E0611 No name 'Message' in module 'email'
虽然它存在......知道为什么吗?
意识到这是一个古老的问题,但正确的答案是,使用 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
等等
我喜欢 pylint,但我确实发现我必须使用很多之# pylint: disable-msg=E0611类的东西才能让它在完全正确但混淆它的情况下关闭(例如,就像在这种情况下,由于email's 玩进口技巧) .
该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 工作不是很有帮助,但它可能有助于解释问题。