Index: src/org/python/jsr223/PyScriptEngine.java =================================================================== --- src/org/python/jsr223/PyScriptEngine.java (revision 6579) +++ src/org/python/jsr223/PyScriptEngine.java (working copy) @@ -25,10 +25,23 @@ PyScriptEngine(ScriptEngineFactory factory) { this.factory = factory; - interp = new PythonInterpreter(new PyScriptEngineScope(this, context)); + interp = new PythonInterpreter(new PyScriptEngineScope(this, getContext())); + + interp.setOut(getContext().getWriter()); + interp.setErr(getContext().getErrorWriter()); + // setIn(getContext().getReader()) + module = (PyModule)Py.getSystemState().modules.__finditem__("__main__"); } + + public void setContext(final ScriptContext ctx) { + super.setContext(ctx); + interp.setOut(getContext().getWriter()); + interp.setErr(getContext().getErrorWriter()); + // setIn + } + public Object eval(String script, ScriptContext context) throws ScriptException { return eval(compileScript(script, context)); } @@ -195,6 +208,7 @@ PyCompiledScript(PyCode code) { this.code = code; this.systemState = Py.getSystemState(); + } public ScriptEngine getEngine() { @@ -203,6 +217,11 @@ public Object eval(ScriptContext ctx) throws ScriptException { // can't read filename from context at this point + + systemState.__stdout__ = systemState.stdout = new PyFileWriter(ctx.getWriter() /* , "" */); + systemState.__stderr__ = systemState.stderr = new PyFileWriter(ctx.getErrorWriter() /* , "" */); +// systemState.__stdin__ = systemState.stdin = new PyFile(new ReaderInputStream(ctx.getReader()), ""); + Py.setSystemState(systemState); return PyScriptEngine.this.eval(code); }