[Python] Eseguire del codice in una stringa (gestione aggiornamenti?)
Mattsteel Matteo Vitturi
mattsteel a hotmail.it
Ven 19 Feb 2010 09:34:23 CET
> Date: Thu, 18 Feb 2010 21:46:54 +0100
> From: michele a nectarine.it
[...]
> Ora, il RE ha un compito ben preciso: scaricare [e supponiamo, per
> ora, che questo venga fatto in modo sicuro e senza modifiche] il
> codice sorgente dell'applicazione, e non ci preoccupiamo per ora di
> come lo scarica.
> Quello che voglio realizzare in questo modo e` un'applicazione che si
> autoaggiorna ad ogni avvio, scaricando il codice sorgente ed
> eseguendolo.
[...]
> Prima domanda: e` possibile tutto cio` ?
> Seconda domanda: quali sono i metodi che devo guardarmi? eval() e
> compile() possono fare al caso mio?
>
> Vi ringrazio.
> Michele
[...]
Mi permetto di rispondere alla tua prima domanda: Personalmente, ho già usato questa tecnica.
Supponiamo, come dici, di avere il modulo RE e un modulo Applicazione accessibile da parte di RE in esecuzione.
In questo caso, quando RE deve aggiornare Applicazione può fare così:
appl = 'Applicazione'
del sys.modules[appl]
exec( '''import {0}'''.format(appl) )
N.B. exec solleva un eccezione se l'import va male: ti stai esponendo
al rischio di importare del codice non più funzionante o peggio...
Conviene evitare di re-importare in un sol colpo tutta
l'Applicazione. Se Applicazione è suddivisa in più package, puoi
importare all'occorrenza solo la parte effettivamente modificato dal
precedente import.
Ciao.
Matteo.
_________________________________________________________________
Scatta, ritocca e condividi le tue foto online. Gratis per te
http://www.windowslive.it/foto.aspx
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20100219/0bf21111/attachment.htm
Maggiori informazioni sulla lista
Python