Search code examples
pythonimportstdsandbox

How can I block a Python stdlib module from being imported?


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


Solution

  • 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.