pylint 不能识别部分标准库

2024-10-05 11:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python 2.6中使用pylint+pydev。 我有一个模块只有这行代码

from email import Message

现在,当我试着运行这个模块时,它运行得很好。但是pylint报告了一个错误:

ID: E0611 No name 'Message' in module 'email'

尽管它存在。。。 知道为什么吗?


Tags: 模块no代码nameinfromimportid
3条回答

我喜欢pylint,但是我发现我必须使用很多# pylint: disable-msg=E0611和类似的东西来让它在完全正确但混淆它的情况下关闭(例如,在本例中,由于email在玩导入技巧)。

意识到这是一个老问题,但正确的答案是,使用Richie描述的“import hackery”调用所需内容的老方法早已被弃用(尽管仍出现在许多教程中)。如果您使用新的方法,您将编写更好的代码,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

等等

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的工作没什么帮助,但它可能有助于解释这个问题。

相关问题 更多 >

    热门问题