Vlad the Impala
Vlad the Impala

Reputation: 15872

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?

Upvotes: 2

Views: 1689

Answers (2)

Kirk Strauser
Kirk Strauser

Reputation: 30943

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.

Upvotes: 1

Phil P
Phil P

Reputation: 843

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.

Upvotes: 6

Related Questions