http://shell.appspot.com/如何在线执行代码?

时间:2011-09-02 09:09:14

标签: python

我正在构建一个网站,允许您在线编写python代码,就像http://shell.appspot.com/http://ideone.com一样。有人可以帮我提供一些帮助吗?

2 个答案:

答案 0 :(得分:6)

首先,您可以浏览他们的source code。主文件只有321行!

基本上它为每个用户会话保留一个单独的全局字典,然后使用compileexec来运行代码并返回结果。

# 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命令。