[Python] problema di import con email generator

Giovanni Porcari giovanni.porcari a softwell.it
Dom 11 Nov 2012 09:31:19 CET


Il giorno 10/nov/2012, alle ore 12:52, Daniele Varrazzo <piro a develer.com> ha scritto:

> On 2012-11-10 09:35, Giovanni Porcari wrote:
>> Stamattina mi sono trovato un errore che non riesco a spiegarmi.
>> 
>> Python 2.7.2
>>>>> import email
>> 
>>>>> email.generator
>> Traceback (most recent call last):
>>  File "<stdin>", line 1, in <module>
>> AttributeError: 'module' object has no attribute 'generator'
>> 
>> 
>>>>> import email.generator as eg
>>>>> dir (eg)
>> ['DecodedGenerator', 'Generator', 'Header', 'NL', 'StringIO',
>> 'UNDERSCORE', '_FMT', '__all__', '__builtins__', '__doc__',
>> '__file__', '__name__', '__package__', '_fmt', '_is8bitstring',
>> '_make_boundary', '_width', 'fcre', 'random', 're', 'sys', 'time',
>> 'warnings']
>>>>> 
>> 
>> 
>> 
>> Si tratta di un baco (magari noto) o c'è qualcosa che mi sfugge ?
> 
> Se generator non è importato esplicitamente da email/__init__.py è normale che "import email; email.generator" fallisca. Stai dicendo che in versioni precedenti funzionava e in 2.7.2 no? Questa potrebbe essere considerata una regressione. Ma se è stato sempre necessario importare email.generator, allora penso sia un modo di fare le cose normale. Un package non è tenuto a importare tutti i suoi sotto-moduli: potrebbe non essere desiderabile se per esempio qualcuno è lento da importare (tipo usa uuid) e non è necessario al resto del package.
> 


Non so se in versioni precedenti funzionasse o meno perchè non avevo avuto occasione di usarlo. 

Avevo dato per scontato (ed è solo mia ignoranza) che fosse una regola che un package importasse
i sotto-moduli ma riflettendoci mi rendo conto che avevo preso come regola assoluta quella
che probabilmente è solo una frequente abitudine. In effetti avevo trovato uno snippet
probabilmente mal convertito dai nomi vecchi ai nomi nuovi e forse non testato e lo
avevo preso per oro colato ;)

Grazie

G


Maggiori informazioni sulla lista Python