2009-08-22 32 views
13

我使用pylint + pydev,與python 2.6。 我有一個模塊,只是這行代碼pylint不認識一些標準庫

from email import Message 

現在,當我嘗試運行此模塊運行良好。但pylint的報告錯誤:

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

雖然它的存在...... 任何想法,爲什麼?

+2

另外隨着'lxml.etree'發生。 – pfctdayelise 2011-03-29 23:34:28

回答

10

我喜歡pylint,但是我發現我必須使用很多# pylint: disable-msg=E0611之類的東西才能讓它在完全正確但迷惑的情況下閉嘴(例如,在這種情況下,由於email'玩弄進口技巧)。

+0

我在這裏說這是'email'的錯,因爲它不應該使用導入鉤子。 – 2016-11-16 04:35:05

1

email模塊使用一些可怕的進口hackery,它已經咬傷我過去。你可以這樣做:

>>> from email import Message 

,但你不能做到這一點:

​​

我知道這是不是讓pylint的工作非常有幫助的,但它可能有助於解釋這個問題。

+1

你使用的是什麼版本? 'email.Message'適用於Debian,使用2.5和2.6 – Tshepang 2010-07-06 19:32:01

13

認識到這是一個老問題,但正確的答案是,使用Richie描述的「導入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 

+1

tru dat!誰知道?謝謝! – 2013-05-10 08:01:29

+0

您可以參考推薦使用PEP或某些來源? – Lukas 2016-07-12 13:17:45

+0

@Lukas - 這不是一個PEP的東西,它是一個電子郵件包的東西;這篇文章已經五年了,所以我不記得舊式和新式的具體討論,但是你會看到我在這裏推薦的新風格,在整個'email'包文檔中使用(例如https:// docs.python.org/2.7/library/email-examples.html)。 – simon 2016-07-13 18:07:09