我正在使用pylint + pydev,python 2.6。 我有一个只有这行代码的模块
from email import Message
现在,当我尝试运行此模块时,它运行正常。但是pylint报告错误:
ID: E0611 No name 'Message' in module 'email'
虽然它存在...... 知道为什么吗?
答案 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工作没有多大帮助,但它可能有助于解释这个问题。