pylint 无法识别某些标准库

发布于 2024-08-02 19:45:24 字数 245 浏览 5 评论 0原文

我正在使用 pylint + pydev,以及 python 2.6。 我有一个只有这行代码的模块

from email import Message

现在,当我尝试运行该模块时,它运行良好。但是pylint报错:

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

虽然它存在... 知道为什么吗?

I'm using pylint + pydev, with python 2.6.
I have a module with just this line of code

from email import Message

Now when I try to run this module it runs fine. But pylint reports an error:

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

Although it exists...
Any idea why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花间憩 2024-08-09 19:45:24

意识到这是一个老问题,但正确的答案是,调用您需要的内容的旧方法(使用 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

等等。

realise this is an old question, but the correct answer is that the older ways of invoking what you need, which use the "import hackery" that Richie describes, have long been deprecated (despite still appearing in many tutorials). If you use the new ways, you'll be writing better code and pylint won't complain.

e.g.

from email import Message
from email import Header
from email.MIMEText import MIMEText

should be

from email.message import Message
from email.header import Header
from email.mime.text import MIMEText

etc.

早乙女 2024-08-09 19:45:24

我喜欢 pylint,但我确实发现我必须使用很多 # pylint:disable-msg=E0611 之类的东西来让它在完全正确但令人困惑的情况下关闭(例如,就像在本例中一样,由于 email 使用了导入技巧)。

I like pylint, but I do find I have to use a lot of # pylint: disable-msg=E0611 and the like to make it shut up in cases that are perfectly correct but confuse it (for example, like in this case, due to email's playing with import tricks).

海拔太高太耀眼 2024-08-09 19:45:24

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

The email module uses some horrible import hackery, which has bitten me in the past. You can do this:

>>> from email import Message

but you can't do this:

>>> import email
>>> email.Message
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'module' object has no attribute 'Message'

I realise that's not very helpful for making pylint work, but it might help to explain the problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文