[Python] Come fareste voi?

Daniele Varrazzo piro a develer.com
Ven 19 Feb 2010 12:50:38 CET


On Fri, 19 Feb 2010 11:59:05 +0100, Stefano Dal Pra <s.dalpra a gmail.com>
wrote:
> Grazie mille!
> 
> Oso rilanciare, visto che mi avete risolto il problema in 2 min.
> 
> Se uno facesse invece:
> 
> from test import x,y,z
> 
> si potrebbe fare lo stesso?
> 
> ( il reload mi va benissimo, per carita', ma se sapete qualcosa anche
> per questo caso...)

In linea di principio, reload(x.y.z) funziona. In pratica, meno, perché se
altri modi (es. x.y o x.y.w) hanno importato x.y.z, il loro puntatore non
cambia. O se cambi un modulo usato da x.y.z devi reloadare prima il modulo,
poi x.y.z. Io usavo trucchi di "deep reload" per ovviare alla cosa. Ora non
trovo più facilmente riferimenti alla cosa su google: dovresti indagare
meglio, io non ho tempo ora scusa. Non so se invece qualcuno ha già
qualcosa da farti leggere a portata di mano.

deep reload è un palliativo (piallativo?...) Il modo buono di fare le cose
è di scrivere il tuo test in una unit test e far girare questo
ogniqualvolta cambi qualcosa: è stato così che ho smesso di usare deep
reload e largamente dimenticato i problemi che comunque lasciava aperti. Ti
sembra di perdere tempo... in realtà dopo mezz'ora che fai così ti accorgi
che di tempo ne risparmi parecchio.

Usa unittest della stdlib e/o nosetest
(http://somethingaboutorange.com/mrl/projects/nose/0.11.1/) e vedi che la
shell per i test la userai sempre meno. Ciao!


-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python