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