pylint未识别部分标准库
我正在使用pylint和pydev,搭配Python 2.6。
我有一个模块,里面只有这一行代码:
from email import Message
现在当我尝试运行这个模块时,它运行得很好。但是pylint却报告了一个错误:
ID: E0611 No name 'Message' in module 'email'
虽然这个模块确实存在……你知道为什么吗?
3 个回答
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正常工作没什么帮助,但可能有助于解释问题所在。
15
我知道这个问题已经很老了,但正确的答案是,之前提到的那些老方法已经不推荐使用了,虽然在很多教程中仍然能看到它们。使用新的方法,你写的代码会更好,而且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
等等。
12
我喜欢使用pylint这个工具,但我发现我经常需要用很多类似于# pylint: disable-msg=E0611
这样的代码来让它闭嘴。因为有些情况下代码是完全正确的,但pylint却搞不懂(比如在这种情况下,由于email
在导入时的一些小把戏)。