如果您运行此代码:
src = "import os"
d = dict(__builtins__={})
exec src in d
蟒蛇说:
ImportError: __import__ not found
这就是我喜欢做的事情,但是在创建(或加载)新模块时:
import imp
mod = imp.new_module("foo")
src = "import os"
exec src in mod.__dict__
如您所见,它运行,但我喜欢它不像上面的程序那样。我喜欢禁用所有内置变量和函数。有没有办法做到这一点?
如果您 print mod.__dict__
,您可以看到它具有__builtins__
变量,例如任何 Python 模块。我想我必须将其值更改为{}
,但我不知道如何。