如何在websi上嵌入Python解释器

2024-06-07 07:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个类似于Codecademy的教育编码网站,但坦率地说,我不知道应该采取什么步骤。在webapp中包含一个简单的python解释器时,我能被指向正确的方向吗?


Tags: 编码网站步骤方向解释器webapp指向坦率地
3条回答

这里的事情比你想象的要多。

主要的问题是您不能让人们在您的web服务器上运行任意的Python代码。例如,如果他们这样做了

import os
os.system("rm -rf *.*")

很明显,您必须安全地运行这个Python代码。但是然后就有了保护Python的问题,这基本上是不可能的,因为它是动态的。因此,您可能需要在虚拟机中运行Python shell,这会带来它自己的麻烦。


你见过例如http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=的吗?

一种选择可能是使用PyPy创建沙盒python。它会限制人们可以做的外部操作。

一旦设置好了,您的网站就会获取代码源,通过ajax将其发送到web服务器,服务器就会在沙盒python实例的子进程中运行代码。如果花费的时间超过5秒,也可以终止进程。然后将输出作为响应返回给客户机。

有关PyPy沙盒的帮助,请参见以下链接:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html

创建一个完全交互的REPL将更加复杂。您需要让服务器上的每个客户机都有一个解释程序。然后接受ajax“行”输入,并通过与正在运行的进程通信来通过interp运行它们,然后返回输出。

总的来说,不是小事。你需要一些强大的开发技能来轻松完成这项工作。如果你只是在学习,你可能会发现这项任务有点艰巨。

最近的一个选择是使用repl

这个选项非常棒,因为编译器是使用JavaScript制作的,所以编译和执行是在用户端进行的,这意味着服务器没有漏洞。

他们有以下编译器:Python3、Python、Javascript、Java、Ruby、PHP。。。

我强烈建议你去http://repl.it查看他们的网站

相关问题 更多 >