how to import a name from a module-path?
thebjorn
BjornSteinarFjeldPettersen at gmail.com
Tue Jun 16 14:19:26 EDT 2009
On Jun 16, 7:43 pm, Gary Herron <gher... at islandtraining.com> wrote:
> 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,
[...]
Thanks, that is much better:
def import_object(path):
module, obj = path.rsplit('.', 1)
m = __import__(module, fromlist=['rootpkg'])
return getattr(m, obj)
function = import_object('mypackage.mymodule.myfunction')
> Gary Herron
Bjorn
More information about the Python-list
mailing list