Cannot import a module from a variable

Duncan Booth duncan.booth at invalid.invalid
Tue Oct 17 07:10:05 EDT 2006


"Tim Williams" <tim at tdw.net> wrote:

>> The import statement expects a name (a symbol), not a string.
>>
> 
> eval( 'import %s' % modname)
> 
> and
> 
> eval( 'reload(%s)' % modname)
> 
> Usual warnings about eval apply,  but in this case it is usable.

Did you actually try your suggestion before posting?

>>> modname = 'os'
>>> eval( 'import %s' % modname)

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    eval( 'import %s' % modname)
  File "<string>", line 1
    import os
         ^
SyntaxError: invalid syntax
>>> 

Also, it is pretty pointless to import the module and not know which 
arbitrary variable name it will have created. It is much simpler just to 
use the __import__ builtin:

>>> module = __import__(modname)
>>> module
<module 'os' from 'C:\Python25\lib\os.pyc'>




More information about the Python-list mailing list