如何阻止导入Python stdlib模块?

时间:2011-10-20 22:05:26

标签: python import std sandbox

在我的Python脚本中,我想阻止导入某些stdlib模块,例如ossys。我该如何做到这一点?

2 个答案:

答案 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文章。在您阅读(并理解)所有内容之前,请不要尝试。