<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
> Date: Thu, 18 Feb 2010 21:46:54 +0100<br>> From: michele@nectarine.it<br>[...] <br>> Ora, il RE ha un compito ben preciso: scaricare [e supponiamo, per <br>> ora, che questo venga fatto in modo sicuro e senza modifiche] il <br>> codice sorgente dell'applicazione, e non ci preoccupiamo per ora di <br>> come lo scarica.<br>> Quello che voglio realizzare in questo modo e` un'applicazione che si <br>> autoaggiorna ad ogni avvio, scaricando il codice sorgente ed <br>> eseguendolo.<br>[...]<br>> Prima domanda: e` possibile tutto cio` ?<br>> Seconda domanda: quali sono i metodi che devo guardarmi? eval() e <br>> compile() possono fare al caso mio?<br>> <br>> Vi ringrazio.<br>> Michele<br>[...]<br><br>
Mi permetto di rispondere alla tua prima domanda: Personalmente, ho già usato questa tecnica. <br>
<br>
Supponiamo, come dici, di avere il modulo RE e un modulo Applicazione accessibile da parte di RE in esecuzione.<br>
In questo caso, quando RE deve aggiornare Applicazione può fare così:<br>
<br>
appl = 'Applicazione'<br>
del sys.modules[appl]<br>
exec( '''import {0}'''.format(appl) )<br>
<br>
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...<br>
<br>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.<br>
<br>
Ciao.<br>
Matteo.<br>
<br><br>                                            <br /><hr />Annoiato? <a href='http://www.messenger.it/raccoltaGiochi.aspx' target='_new'>Prova i giochi di Messenger!</a></body>
</html>