我无法使用该eval()
功能导入模块。
所以,我有一个功能,如果我这样做的import vfs_tests as v
话。但是,使用eval()
like的相同导入eval('import vfs_tests as v')
会引发语法错误。
为什么会这样?
使用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__
.
如果您想将所有代码作为字符串传递给 eval 函数,我的小技巧:
>>> eval('exec("import uuid") or str(uuid.uuid4())')
'bc4b921a-98da-447d-be91-8fc1cebc2f90'
>>> eval('exec("import math") or math.sqrt(2)')
1.4142135623730951