On Mon, Jun 30, 2008 at 03:41:39PM +0200, Leonardo wrote: > Alla fine ho risolto con execfile, è incredibile: esegue un file come se > fosse all'interno del file chiamante, passandogli tutte le variabile, le > funzioni, e le classi esistenti. > L'unica cosa è che adesso un modulo è così ad esempio: > > file rejoin.py: > > #! /usr/bin/python > # -*- coding: UTF-8 -*- > user, mode, chan, request = self.get_params(server_response) > if self.Bot.nick in server_response: > print "Sono stato kikkato!" > self.Bot.join(chan) > self.send(self.response, chan) > > E fa un po' senso vederlo così, con praticamente tutte le variabili e > funzioni non dichiarate nè passate come argomento eppure funzionanti. > Ovvio che se lo lancio direttamente solleva decine di errori x
c'è un altro aspetto che non mi piace di execfile. Proprio il mese scorso sono passato da execfile a __import__ in un set di test il cui principio è uguale a quello dei plugin. il "problema" è negli import. Supponi di avere un plugin così:: import sys class A(object): def test(self): print sys.path e di volerlo usare così LOCS = {} execfile('plugin_A.py', {}, LOCS) a = LOCS['A']() a.test() ti verrà sollevato l'errore che perchè 'a' non vede __più__ il modulo sys. E non mi pare una soluzione dire che assieme ad A importo tutto nel mio programma principale. Ovviamente funzionerebbe se facessi l'import direttamente nel metodo, ma io lo consideravo troppo particolare e esposto ad errori. sandro *:-) _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python