how to import a name from a module-path?

Gary Herron gherron at islandtraining.com
Tue Jun 16 13:43:33 EDT 2009


thebjorn wrote:
> I'm storing the path to functions in a database and now I'd like to
> get a reference so I can execute them.
>
> I looked briefly at the imp module and got very confused...  Currently
> I'm doing this:
>
>   def import_object(path):
>       module, obj = path.rsplit('.', 1)
>       exec "from rootpkg.%s import %s as fn" % (module, obj)
>       return fn
>
>   function = import_object('mypackage.mymodule.myfunction')
>
> this is happening in a trusted environment, so I'm not worried about
> malicious code.
>
> Are there more elegant ways of doing this (ie. without exec)?
>   

Yes.  Look at the __import__ builtin function, and if that's not enough 
functionality, look at the module names imp, which provides 
documentation starting with this bit:

DESCRIPTION
    This module provides the components needed to build your own
    __import__ function.



Both are available in Python2.x and Python3.x

Gary Herron



> -- bjorn
>   




More information about the Python-list mailing list