def importName(modulename, name):
""" Import a named object from a module in the context of this function,
which means you should use fully qualified module paths.
Return None on failure.
"""
try:
module = __import__(modulename, globals(), locals(), [name])
except ImportError:
return None
return vars(module)[name]
### MyApp/extensions/spam.py
class Handler:
def handleSomething(self):
print "spam!"
### MyApp/extensions/eggs.py
class Handler:
def handleSomething(self):
print "eggs!"
### Example
extension_name = "spam" # could be "eggs", too!
Handler = importName("MyApp.extensions." + extension_name, "Handler")
handler = Handler()
handler.handleSomething()