如何在网站上嵌入Python解释器

问题描述 投票:0回答:5

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

python web-applications interpreter
5个回答
11
投票

一种选择可能是使用 PyPy 创建沙盒 Python。这会限制某人可以进行的外部操作。

完成设置后,您的网站将获取代码源,通过 ajax 将其发送到您的网络服务器,并且服务器将在沙盒 Python 实例的子进程中运行代码。如果该进程花费的时间超过 5 秒,您也可以终止该进程。然后将输出作为响应返回给客户端。

请参阅以下链接以获取有关 PyPy 沙箱的帮助:
http://doc.pypy.org/en/latest/sandbox.html
http://readadevalprint.com/blog/python-sandbox-with-pypy.html

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

总体而言,并非微不足道。您需要一些强大的开发技能才能轻松地完成此操作。如果您刚刚学习,您可能会发现这项任务有点令人畏惧。


7
投票

这里有比您想象的更多的事情。

主要问题是你不能让人们在你的网络服务器上运行任意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=?


6
投票

最近的一个选择是使用 repl

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

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

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


2
投票

了解 LXC 容器。他们有一个非常酷的 API,你可以用它来创建轻量级 Linux 容器。您可以在该容器内运行子进程命令,这样最终用户就不会干扰您的主服务器。


0
投票

也许检查布莱森 它非常整洁。

https://brython.info/

© www.soinside.com 2019 - 2024. All rights reserved.