def debug_script(script): def get_source(fname): return script class Loader: def __init__(self): self.get_source = get_source globs = {} globs.update(globals()) globs['__loader__'] = Loader() globs['__name__'] = 'script_name' code = compile(script, 'script_name', 'exec') return code, globs s= """ x = 1 y = 'blabla' """ code, globs = debug_script(s) exec(code, globs)