Search code examples
pythoneval

eval to import a module


I can't import a module using the eval() function.

So, I have a function where if I do import vfs_tests as v it works. However, the same import using eval() like eval('import vfs_tests as v') throws a syntax error.

Why is this so?


Solution

  • Use exec:

    exec 'import vfs_tests as v'
    

    eval works only on expressions, import is a statement.

    exec is a function in Python 3 : exec('import vfs_tests as v')

    To import a module using a string you should use importlib module:

    import importlib
    mod = importlib.import_module('vfs_tests')
    

    In Python 2.6 and earlier use __import__.