Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Alessandro Dentella
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:

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Daniele Varrazzo
[EMAIL PROTECTED] [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 18:02:18 +0200 User-Agent: RoundCube Webmail/0.1 Content-Type: text/plain; charset=UTF-8

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Alessandro Dentella
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

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Leonardo
Mi sembra di capire che tu fai execfile per sfruttare gli effetti secondari delle istruzioni eseguite. Se posso, ti suggerisco di creare dei moduli plugin che definiscano unicamente una funzione. Puoi caricare tutti i plugin all'avvio del programma o ad un certo evento e poi usare le funzioni

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Alessandro Dentella
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

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Daniele Varrazzo
Alessandro Dentella ha scritto: 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

Re: [Python] Funzioni come moduli

2008-06-30 Per discussione Daniele Varrazzo
Leonardo ha scritto: Mi sembra di capire che tu fai execfile per sfruttare gli effetti secondari delle istruzioni eseguite. Se posso, ti suggerisco di creare dei moduli plugin che definiscano unicamente una funzione. Puoi caricare tutti i plugin all'avvio del programma o ad un certo evento e

Re: [Python] Funzioni come moduli

2008-06-29 Per discussione Alessandro Dentella
Quindi mi sarebbe d'aiuto un buon metodo per importare moduli a seconda di una variabile, o altri modo per definire ed utilizzare funzioni in files esterni al cuore del programma. Grazie per le eventuali risposte :) Se ho capito bene stai cercando la funzione __import__:

Re: [Python] Funzioni come moduli

2008-06-29 Per discussione Domenico Chierico
On Sun, 2008-06-29 at 18:24 +0100, Daniele Varrazzo wrote: Ancora più facile è usare execfile() per eseguire un file python in un dizionario dal quale poi pescare gli oggetti che servono. Come vantaggio i tuoi plugin non devono risiedere nel pythonpath, il risultato della funzione non è

Re: [Python] Funzioni come moduli

2008-06-29 Per discussione Luca
Non so se si tratta di una soluzione stupida o meno. però potresti creare un modulo di questo genere: funzioni/__init__.py (file vuoto) funzioni/shell.py funzioni/etc.py poi importi il modulo con: import funzioni e per vedere quali funzioni ci sono fai un: dir(funzioni) che ti restituisce