dubux wrote:
I am trying to import modules dynamicly from a directory (modules/) in
which i have __init__.py with the __all__ variable set. Everything
imports correctly and I have verified this however I am stuck on
actually using my classes in the dynamicly imported modules.

this bit is in my main.py (or base script) to import the modules in
the modules/ directory:

loaded_modules = []
for item in modules:
  if item == '__init__.py': pass
  else:
    if item.endswith('.py'):
      __import__('modules.' + item[0:len(item) - 3])
      loaded_modules.append(item[0:len(item) - 3])
    else: pass

After loading all the modules, i try to do something like:

instance = modules.modulename.class()

And I get an AttributeError. What am I doing wrong here? Help please!!

Your code is rather strange, 'modules' looks to be a list or some iterable, and then you expect to have a 'modulename' attribute or something... My guess is that you pasted an approximative translation of your code which makes it impossible de debug.

Here is a possible way of importing a bunch of python files:

loaded_modules = {}
fileNames = os.listdir('./modules')
pyFiles = [os.path.basename(name).replace('.py', '') for name in fileNames if name.endswith('.py')]

for pyFile in pyFiles:
   loaded_modules[pyFile] = __import__('modules.%s' % pyFile)

# how to get a class named 'AClassName' defined in then modules
for module in loaded_modules:
   myClass = getattr(loaded_modules[module], 'AClassName', None)
   print myClass
   if myClass:
       myInstance = myClass()

JM



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to