python - 如何更改 __builtins__ 模块变量?

标签 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 模块。我想我必须将其值更改为 {},但我不知道如何操作。

最佳答案

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

mod.__dict__["__builtins__"] = {}

关于python - 如何更改 __builtins__ 模块变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211382/

相关文章:

python - Django REST Framework Browsable API 的不同版本控制方案

python - 如何在 Fedora 17 x86_64 中安装 PIL?

python - 为什么 Python 生成器在执行脚本中将其范围与全局混淆?

python - 从 Python 中动态创建的模块导入代码

python - 如何在 Python 中安全地使用 exec()?

python - 如何通知 Python/Tornado 客户端已关闭选项卡/浏览器?

python - 使用python清理大数据

python - 下载普通爬取完整索引文件

python - 在 exec() 中定义的回调期间关闭丢失