PDA

View Full Version : [python] smtplib (niubbo)


guldo76
24-01-2006, 22:25
Ciao.
Sto imparando un po' a tempo perso python, ma oggi mi sono scontrato con un problema che dovrebbe essere stupidissimo, ma mi sta facendo sclerare...
Se avvio l'interprete posso fare il mio bel
>>> import smtplib
e inviare email con tanto di attachment. Bene.
Ho messo il tutto in uno script; non ne vuole sapere di fare l'import di smtplib...
Perché?
Ho preso uno script a caso, funzionante, gli ho aggiunto:
import smtplib
e non funziona più.
Perché l'import di smtplib dà tutti 'sti problemi?!?
$ python regression.py
Traceback (most recent call last):
File "regression.py", line 9, in ?
import sys, os, re, unittest, smtplib
File "/usr/lib/python2.3/smtplib.py", line 49, in ?
from email.base64MIME import encode as encode_base64

:help:

p.s.: come vedete ho python 2.3

cdimauro
25-01-2006, 09:30
Mi sembra molto strano. Io uso smtplib da tempo con Python 2.3 e funziona benissimo. Assurdo che ti dia addirittura dei problemi nell'import.

guldo76
25-01-2006, 13:19
Boh... questa sera riprovo.
Grazie cmq :)
Un'altra cosa: ho eseguito
python pippo.py
in cui c'erano errori, e me li ha visualizzati a console. OK.
poi ho eseguito
python pluto.py
e mi ha mostrato nello stack non solo l'errore di import di smtplib, ma anche i precedenti errori di pippo.py. Ma cosa c'entrano?!?
Perché eseguendo il secondo mi rileva ancora gli errori di runtime del primo?!?

guldo76
25-01-2006, 19:24
Ho capito grazie a un messaggio trovato su it.comp.lang.python in cui a uno era successa la stessa cosa.
Nelle mie prove di ieri, ho avuto la malaugurata idea di chiamare uno script "email.py"... e a quanto pare il relativo "email.pyc" fa sclerare di brutto smtplib...
:fagiano:
Pensa te...
D'ora in poi starò molto attento ai nomi che do agli script...
A proposito, cosa sono i file .pyc?!? Diveintopython non lo spiega... :stordita:

bye

cdimauro
26-01-2006, 09:09
Infatti mi sembrava molto strano il comportamento (mai successo niente di simile).

i file .pyc sono l'equivalente dei file .class di Java: in pratica il codice python viene compilato in bytecode e stipato nell'equivamente file .pyc, in modo tale che alla successiva esecuzione, se il sorgente non è stato cambiato, non venga effettuato alcun parsing, risparmiando parecchio tempo di calcolo.

Python rulez. :D

guldo76
26-01-2006, 11:41
Ah, ecco :)
Mi sembrava strano di trovare un file compilato... "Ma python non era un linguaggio di scripting?" mi chiedevo... :fagiano:
Ora è chiaro

Grazie mille :D

bye