2012-04-27 3 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 и библиотеки logilab из http://www.logilab.org/

Оба питона 64 и 32 бит жалуются таким же образом, используя Python 2.6.6.

ответ

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 

, например.

Смежные вопросы