2012-04-27 30 views
1
No config file found, using default configuration 
************* Module sendmail 
C:153,0: Line too long (146/80) 
C:156,0: Line too long (105/80) 
C:190,0: Line too long (88/80) 
F: 8,0: Unable to import 'email.MIMEMultipart' 
E: 8,0: No name 'MIMEMultipart' in module 'email' 
F: 9,0: Unable to import 'email.MIMEBase' 
E: 9,0: No name 'MIMEBase' in module 'email' 
E: 10,0: No name 'Encoders' in module 'email' 
R: 47,0:sendmail: Too many arguments (7/5) 
R: 47,0:sendmail: Too many local variables (17/15) 
W: 74,4:sendmail: No exception type(s) specified 
W: 95,12:sendmail: No exception type(s) specified 
R:142,0:commandline_handler: Too many branches (15/12) 

インポートはできないが、スクリプトはうまく動作することに注意してください。問題のコードは次のとおりです。Pylintはエラーを出すがコードは正常に動作する

#!/usr/local/bin/python 
''' sendmail module. 

Can be used to send mail, attachments, or otherwise. 

''' 
from email.mime.text import MIMEText 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEBase import MIMEBase 
from email import Encoders 
import getopt 
import os 
import smtplib 
import sys 

def main(): 

私はこのプログラムを実行すると効果的ですが、なぜpylintが文句を言うのですか?単に

pylint sendmail.py 

を行うことでpylint私が走った

私は64と32ビットのpython 2.6.6を使用して、同じように文句を言うhttp://www.logilab.org/

から両方のpythonをpylintとlogilabライブラリをインストールしました。

答えて

5

さまざまな大文字の名前がPython 2.5で名前が変更されました。詳細については、http://docs.python.org/release/2.7/library/email.html#package-historyを参照してください。ベースemailパッケージの__init__.pyは、古い名前をPythonで動作させるためのいくつかのトリックを行いますが、pylintは独自の別のインポートメソッドを持っているため、これらのトリックはpylintでは機能しません。新しい名前にオーバー

スイッチと、あなたは問題ないはずです。例えば

from email.mime import multipart as MIMEMultipart 
from email.mime import base as MIMEBase 
from email import encoders as Encoders