<[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> X-Sender: [EMAIL PROTECTED] Received: from 82.111.147.97 [82.111.147.97] with HTTP/1.1 (POST); Mon, 30 Jun 2008 19:00:39 +0200 User-Agent: RoundCube Webmail/0.1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit
On Mon, 30 Jun 2008 18:26:21 +0200, Alessandro Dentella <[EMAIL PROTECTED]> wrote: >> > 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. >> >> Il problema e' che usi un dizionario per ambiente globale che pero' poi >> butti via. >> >> Il codice seguente funziona come ci si aspetta: >> >> In [1]: ENV = {} >> In [3]: execfile('plugin_A.py', ENV) >> In [5]: a = ENV['A']() >> In [6]: a.test() > > > certo ma a quel punto ogni variabile viene importata nel namespace del > chiamante e -proprio per dei plugin che possono essre fatti da terze > parti- > non so quanto sia opportuno. Chi mi assicura che non ridefinisca nomi di > variabili che ho in uso? A me non sembra che il global namespace del chiamante venga inquinato: In [1]: ENV = {} In [2]: execfile('plugin_A.py', ENV) In [3]: a = ENV['A']() In [4]: a.test() [ ...roba... ] In [5]: sys --------------------------------------------------------------------------- <type 'exceptions.NameError'> Traceback (most recent call last) /home/piro/py/<ipython console> in <module>() <type 'exceptions.NameError'>: name 'sys' is not defined -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python