如何更改__builtins__模块变量?

时间:2015-07-03 16:52:56

标签: python python-exec

如果您运行此代码:

src = "import os"
d = dict(__builtins__={})
exec src in d

Python说:

ImportError: __import__ not found

这就是我喜欢做的事情,但在创建(或可能加载)新模块时:

import imp
mod = imp.new_module("foo")
src = "import os"
exec src in mod.__dict__

你可以看到它运行,但我喜欢它不像上面的程序。我想禁用所有内置变量和函数。有没有办法做到这一点?

如果您打印mod.__dict__,您可以看到它有__builtins__变量,例如任何Python模块。我想我必须将其值更改为{},但我不知道如何。

1 个答案:

答案 0 :(得分:2)

我想我必须将其值更改为{},但我不知道如何。

mod.__dict__["__builtins__"] = {}