2

在开发我的一个应用程序期间,我想给用户一个更强大的过滤器。因此,我想为用户提供一个简单的脚本界面。脚本语言将是 Python。

出于显而易见的原因,我想收紧语言的范围以匹配我的特定目的(我不希望用户触摸服务器的 HDD 文件等)。我也不想自己编写一个 Python 解释器(这将重新发明轮子,而“新”轮子最终将是矩形的)。但是,我还没有找到任何合适的库或模块用于此目的。

Groovy 的编译定制器和编译器配置方法正是我想要的,Python 是否存在类似的东西?

4

1 回答 1

1

您要查找的内容称为“沙盒”或“受限执行”。这个 wiki 页面讨论了一些细节

简而言之,Python 极客和专家曾多次努力在 Python 之上构建沙箱,但最终都失败了。

主要原因是 Python 提供了太多路径来做某事,以至于沙箱要么必须禁止常见用例(使大量库和 Python 代码无用),要么必须在沙箱中有漏洞,这会使概念没用。

因此,虽然它看起来是一个简单的好主意,但到目前为止,还没有解决方案。AFAIK,Python 中没有钩子可以调整字节码编译器以实现类似Groovy Sandbox的功能。

有关的:

于 2013-11-04T14:34:38.070 回答