def execution_context(): from org.python.core import Py from org.python.util import PythonInterpreter from org.python.core import PySystemState ps = PySystemState() pi = PythonInterpreter({}, ps) if locals is not None: pi.setLocals(locals) if inp is not None: pi.setIn(inp) if out is not None: pi.setOut(out) if err is not None: pi.setErr(err) try: if isinstance(source, types.FunctionType): # A function wrapping a compiled code block pi.exec(source.func_code) elif isinstance(source, java.io.InputStream): # A byte-oriented file-like input stream pi.execfile(source) elif isinstance(source, java.io.Reader): # A character-oriented file-like input stream code = pi.compile(source) pi.exec(code) else: # A str or unicode (see UnicodeSourceTest) pi.exec(source) except: print print '-'*60 traceback.print_exc(file=sys.stdout) print '-'*60