pylint未识别部分标准库

16 投票
3 回答
8358 浏览
提问于 2025-04-15 13:48

我正在使用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在导入时的一些小把戏)。

撰写回答