Index: Lib/code.py =================================================================== --- Lib/code.py (revision 52005) +++ Lib/code.py (working copy) @@ -6,6 +6,7 @@ import sys +import os import traceback from codeop import CommandCompiler, compile_command @@ -190,6 +191,9 @@ """ InteractiveInterpreter.__init__(self, locals) + self.input = os.fdopen(os.dup(sys.stdin.fileno()), "rb") + self.output = os.fdopen(os.dup(sys.stdout.fileno()), "wb") + self.error = os.fdopen(os.dup(sys.stderr.fileno()), "wb") self.filename = filename self.resetbuffer() @@ -274,9 +278,26 @@ implementation. """ - return raw_input(prompt) + if prompt: + self.output.write(prompt) + self.output.flush() + return self.input.readline() + def write(self, data): + self.error.write(data) + def runcode(self, code): + try: + exec code in self.locals + except SystemExit: + raise + except: + self.showtraceback() + else: + if softspace(self.output, 0): + print >> self.output + + def interact(banner=None, readfunc=None, local=None): """Closely emulate the interactive Python interpreter.