Massi wrote:
Hi everyone,
in my project I have the following directory structure:
plugins
|
-- wav_plug
|
-- __init__.py
-- WavPlug.py
-- mp3_plug
|
-- __init__.py
-- Mp3Plug.py
...
-- etc_plug
|
-- __init__.py
-- EtcPlug.py
Every .py file contain a class definition whose name is identical to
to the file name, so in my main script I have to import each submodule
like that:
from plugins.wav_plug.WavPlug import WavPlug
from plugins.wav_plug.Mp3Plug import Mp3Plug
and so on. This is uncomfortable, since when a new plugin is added I
have to import it too. So my question is, is it possible to iterate
through the 'plugins' directory tree in order to automatically import
the submodules contained in each subdirectory?
I googled and found that the pkgutil could help, but it is not clear
how. Any hints?
Thanks in advance.
Hi,
Try something like (*untested code*)
plugins = {}
classes = {}
for plugin, className in [('wav_plug', 'WavPlug'), ('mp3_plug', 'Mp3Plug')]:
plugins[plugin] = __import__(os.path.join('plugins', plugin, className))
classes[className] = getattr(plugins[plugin], className)
# raise a keyError if the plugin has not been imported
wav = classes['wav_plug']()
Make sure all subdirs have the __init__.py file, including the plugins
directory.
JM
--
http://mail.python.org/mailman/listinfo/python-list