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