我正在构建一个网站,允许您在线编写python代码,就像http://shell.appspot.com/或http://ideone.com一样。有人可以帮我提供一些帮助吗?
答案 0 :(得分:6)
首先,您可以浏览他们的source code。主文件只有321行!
基本上它为每个用户会话保留一个单独的全局字典,然后使用compile
和exec
来运行代码并返回结果。
# log and compile the statement up front
try:
logging.info('Compiling and evaluating:\n%s' % statement)
compiled = compile(statement, '<string>', 'single')
except:
self.response.out.write(traceback.format_exc())
return
和
# run!
old_globals = dict(statement_module.__dict__)
try:
old_stdout = sys.stdout
old_stderr = sys.stderr
try:
sys.stdout = self.response.out
sys.stderr = self.response.out
exec compiled in statement_module.__dict__
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr
except:
self.response.out.write(traceback.format_exc())
return
修改:不使用Google App Engine会让事情变得更加复杂。但是你可以看看pysandbox
答案 1 :(得分:2)
我是python的新手,但希望以下链接可以帮助你实现你的目标, BaseHTTPServer(http://docs.python.org/library/basehttpserver.html)库可用于处理Web请求,ipython(http://ipython.org)用于在后端执行python命令。