Intanto grazie mille per le prontissime risposte alla mia richiesta...
Le vostre soluzioni funzionano entrambe se provate in terminale.
Non riesco però ad applicarle al mio preciso ambito, per questo entro
con voi nel merito della questione più in profondo.

Ho una directory con dei plugins, che vorrei riuscire a caricare dinamicamente.

Eseguo l'import dinamico cercando nel filesystem le cartelle; ogni
cartella ha al suo interno un  file __init__.py che dovrebbe procedere
all'inclusione del file principale del plugin, che si chiama
NomePlugin.py.
Il codice dedito a questo è

__import__(PF.pluginName, globals(), locals(), [])

In PF.pluginName c'è la stringa con il nome del plugin e quindi della
file .py da importare.

Mi piacerebbe anche istanziare la classe principale all'interno del
file, che si chiama, con un guizzo di fantasia, NomePlugin.

Al momento faccio
NomePlugin.NomePlugin(parametro) (supponendo appunto che sia file
principale che classe si chiamino NomePlugin

vorrei dinamicizzare il tutto ed ho provato con
globals()[PF.pluginName](PF.pluginName)

Traceback (most recent call last):
 File "./AirNMS.py", line 58, in ?
   app = AirNMS(0)
 File "/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py",
line 7700, in __init__
   self._BootstrapApp()
 File "/usr/lib/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py",
line 7352, in _BootstrapApp
   return _core_.PyApp__BootstrapApp(*args, **kwargs)
 File "./AirNMS.py", line 53, in OnInit
   frame = MainView.MainView(None, -1, 'AirNMS')
 File "/home/sbaush/Projects/airspot/trunk/MainView.py", line 34, in __init__
   sectionDirector.createAllPlugin()
 File "/home/sbaush/Projects/airspot/trunk/SectionDirector.py", line
71, in createAllPlugin
   self.sectionsReferences[eachSection].createPlugin()
 File "/home/sbaush/Projects/airspot/trunk/Section.py", line 51, in
createPlugin
   
self.pluginReferences[eachPlugin]=self.pluginFactory.getPlugin(self.basePath,self.name,eachPlugin)
 File "/home/sbaush/Projects/airspot/trunk/PluginFactory.py", line
22, in getPlugin
   __import__(self.basePath+'.'+self.sectionName+'.'+self.pluginName)
 File 
"/home/sbaush/Projects/airspot/trunk/sections/Monitor/MapPlugin/__init__.py",
line 8, in ?
   globals()[PF.pluginName](MapPlugin)
TypeError: 'module' object is not callable


Ho provato anche con vars al posto di globals, ma il risultato è stato
lo stesso...

Cosa posso fare?

Sono riuscito a spiegarmi?

--
Marco Meoni (Sbaush)
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a