How can I block a Python stdlib module from being

2019-04-13 08:51发布

In my Python script, I want to prevent certain stdlib modules, such as os and sys, from being imported. How would I accomplish this?

2条回答
家丑人穷心不美
2楼-- · 2019-04-13 09:24

Don't import them. More generally, don't execute untrusted code inside your module. eval() looks spiffy but it's almost certainly not your friend.

If you're intent on sandboxing external code, look at the SandboxedPython article on the Python wiki. Until you've read (and understood) everything there, please don't try it.

查看更多
\"骚年 ilove
3楼-- · 2019-04-13 09:34

Taking you very literally, and if you just mean "to stub them out so that they won't be loaded by a straight import", not "make them unloadable by untrusted code", then:

import sys
sys.modules['os'] = None
sys.modules['system'] = None

Of course, there is no module system so you might have meant sys, in which case you're in trouble.

If you're trying to keep untrusted code from being able to do Bad Things, then take a look at http://wiki.python.org/moin/SandboxedPython and realise that you're after something not immediately feasible.

查看更多
登录 后发表回答