Possible to import a module whose name is contained in a variable?
Heiko Wundram
modelnine at ceosg.de
Mon Mar 7 05:08:20 EST 2005
On Monday 07 March 2005 11:52, Claudio Grondi wrote:
> I try to avoid using any of the
> __xxxx__() functions if possible
> (considering this a good
> programming style).
This is never good style, at least in the case of exec. exec is evil.
What works (beware that the below code is nevertheless untested and might
contain little warts) and is the "usual" and clean way to go:
### libinfo/__init__.py
# Empty.
### libinfo/Module1.py
def libinfo():
return "I am module1."
CFLAGS = ["-DMODULE1"]
### libinfo/Module2.py
def libinfo():
return "I am module2."
CFLAGS = ["-DMODULE2"]
### Importer.py
modules = {}
CFLAGS = []
def load_modules(to_load=["module1","module2"]):
global modules, CFLAGS
for mod in to_load:
try:
modules[mod] = getattr(__import__("libinfo.%s" % mod),mod)
except ImportError:
print "Could not load %s." % mod
continue
print "Module: %s (%r)." % (mod,modules[mod])
print "Modules libinfo: %r." % modules[mod].libinfo()
CFLAGS += modules[mod].CFLAGS
print "Total CFLAGS: %s." % CFLAGS
if __name__ == "__main__":
load_modules()
print "Module container: %s." % modules
### End Importer.py
HTH!
--
--- Heiko.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20050307/b1fc98c9/attachment.sig>
More information about the Python-list
mailing list