On Tue, Apr 5, 2016, at 21:43, Steven D'Aprano wrote: > As Zooko says, Guido's "best argument is that reducing usability (in > terms > of forbidding language features, especially module import) and reducing > the > usefulness of extant library code" would make the resulting interpreter > too > feeble to be useful.
You don't have to forbid module import. The sandbox could control what modules can be loaded, and what happens when you try to load a module. import sys module = type(sys) fm = {} def fimp(name, *etc): # In a real implementation, this could also load whitelisted modules try: return fm[name] except KeyError: raise ImportError("Tried to load restricted module " + name) fm['builtins'] = fb = module('builtins') fb.int = int fb.str = str fb.len = len fb.print = print fb.__import__ = fimp fm['sys'] = fsys = module('sys') fsys.modules = fm exec(""" import sys print(sys.modules.keys()) """, {'__builtins__': fb}) -- https://mail.python.org/mailman/listinfo/python-list