Importing a module, using a variable name?

Just van Rossum just at letterror.com
Fri Mar 10 07:36:28 EST 2000


Anthony J Wilkinson wrote:
> 
> On Fri, 10 Mar 2000, Benjamin Schollnick wrote:
> 
> >       Is it possible to import a module, via a variable?  I've tried it
> [...]
> >               module_to_import = "test"
> >               import module_to_import
> 
> Try:
> 
> module_to_import = 'sys'
> evalstr = 'import ' + module_to_import
> exec(evalstr)

In my opinion, the following idiom is nicer:

a_module = __import__("sys")

It's not quite the same, since it doesn't the module won't become
visible as "sys" but as "a_module", but in my experience that's usually
no problem (often it's even preferable) when you're importing modules
dynamically.

Minor nit: exec is a statement, therefore you can (and should) write
  exec evalstr
instead of 
  exec(evalstr)


Just



More information about the Python-list mailing list