Eval импортировать модуль

Я не могу импортировать модуль с помощью функции eval().

Итак, у меня есть функция, где, если я делаю import vfs_tests as v, она работает. Однако тот же импорт с использованием eval() как eval('import vfs_tests as v') выдает синтаксическую ошибку.

Почему это так?

Ответ 1

Используйте exec:

exec 'import vfs_tests as v'

eval работает только с выражениями, import - это утверждение.

exec - это функция в Python 3: exec('import vfs_tests as v')

Чтобы импортировать модуль с помощью строки, вы должны использовать модуль importlib:

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

В Python 2.6 и более ранних версиях используйте __import__.