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

Reply via email to