[Python-Dev] How to block a module import
Alexander Belopolsky
alexander.belopolsky at gmail.com
Tue Jul 13 02:37:14 CEST 2010
I thought that in order to block a module from being imported, one
would need to assign None to the corresponding entry in sys.modules.
However, it looks like the code in test.support uses 0 instead of
None:
def _save_and_block_module(name, orig_modules):
"""Helper function to save and block a module in sys.modules
Return value is True if the module was in sys.modules and
False otherwise."""
saved = True
try:
orig_modules[name] = sys.modules[name]
except KeyError:
saved = False
sys.modules[name] = 0 # <--- I would expect None here
return saved
In my experiments, 0 is not equivalent to None:
>>> import sys, time
>>> sys.modules['time'] = 0
>>> __import__('time')
0
>>> sys.modules['time'] = None
>>> __import__('time')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named time
Am I missing something?
More information about the Python-Dev
mailing list