在我的Python脚本中,我想阻止导入某些stdlib模块,例如os
和sys
。我该如何做到这一点?
答案 0 :(得分:5)
非常简单地告诉你,如果你的意思是“将它们存根以便它们不会被直接导入加载”,不“使它们可以通过不受信任的代码卸载”,那么:
import sys
sys.modules['os'] = None
sys.modules['system'] = None
当然,没有模块system
所以你可能意味着sys
,在这种情况下你遇到了麻烦。
如果您试图让不受信任的代码无法做坏事,那么请查看http://wiki.python.org/moin/SandboxedPython并意识到您正在寻找不能立即行动的代码。
答案 1 :(得分:1)
不要导入它们。更一般地说,不要在模块中执行不受信任的代码。 eval()
看起来很漂亮,但几乎肯定不是你的朋友。
如果您打算沙箱化外部代码,请查看Python wiki上的SandboxedPython文章。在您阅读(并理解)所有内容之前,请不要尝试。