Am Sat, 09 Jul 2005 20:30:04 -0700 schrieb spike grobstein: > I'm a total Python newbie, so bear with me here... > > I'm writing a program that has a user-configurable, module-based > architecture. it's got a directory where modules are stored (.py files) > which subclass one of several master classes. [cut]
> for item in dir_list: > # strip off the extensions... > if (item == "__init__.py"): > continue > elif (item[-3:] == '.py'): item.endswith(".py") would be more python-like. > mod_name = item[:-3] > elif (item[-4:] == '.pyc'): elif item.endswith(".pyc"): continue # Don't load module twice > else: > continue > > print "Loading %s..." % mod > > module_list.append(__import__("Modules.%s" % mod)) > > print "Done." > > > it works more or less like I expect, except that... > > A. the first time it runs, blah.py then has a blah.pyc counterpart. > When I run the program again, it imports it twice. Not horrible, but > not what I want. is there any way around this? See above: Just don't load it. The compiled "pyc" file is taken automatically if it is newer than the "py" file. > B. module_list winds up consisting of items called 'Modules.blah' and > I'd like to have just blah. I realize I could say: > > my_module = __import__("Modules.%s" % mod) > module_list.append(getattr(my_module, mod)) I use this getattr() after __import__, too. I don't think there is a easier way. HTH, Thomas -- Thomas Güttler, http://www.thomas-guettler.de/ -- http://mail.python.org/mailman/listinfo/python-list