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