1

好的,所以我正在浏览器中尝试一个简单的 python repl。我想在文本输入中放入一些 python 代码,然后点击“发送”按钮,然后返回评估结果。

我正在使用烧瓶,有一条路线,它调用 stdlibeval函数,然后将其发回。我还使用zeroMQ和简单的服务器/客户端设置。虽然我觉得我错过了一些东西......

做这种事情的标准方法是什么?repl.itskulpt等项目正在这样做,但它们正在编译为 javascript。Ipython notebook正在使用 zeroMQ,好吧,我不知道他们这样做的确切方式,发送一些带有 pub/sub 设置的 python 字符串,然后使用exec我认为....

我在想我想将 repl 嵌入到支持多种语言的网页中,但我首先从 python 开始。也许其他人已经在这样做了?任何帮助表示赞赏!

4

1 回答 1

1

IPython notebook webapp 与作为与 ZMQ 与内核对话的桥梁的龙卷风网络服务器进行讨论,对于我所知道的那些,内核可能是 python、julia、haskell、OCamel、nodejs、ruby、scala。只要内核符合消息规范(以及编写 IHaskell 的人关于消息传递协议的精彩博文),它对于只发送字符串/接收结果的前端是透明的。

如果您想要更独立的版本,可以查看 Min 的单细胞演示。但基本上你应该能够将 IPython 嵌入kernel.js到页面中,并且只需使用IPython.kernel.execute(code, callbacks).

它在内核中工作的确切方式因语言而异。Python 本身可以这样做,因为您可以评估特定命名空间中的大量代码,对于其他语言,我无法准确告诉您。

我认为重用 IPython 的消息规范和可重用组件不是重新发明,而是使 sens[1] 变得有意义。

此外,我从可靠的消息来源听说 IPython 希望能够使用不同语言的语言启动笔记本,并且他们还希望在浏览器中比 REPL(如 QtConsole)更接近 [2]。

[1] 我有偏见,我是一名 IPython 开发人员。

[2] 这是我们经常谈论的东西,但我们有一些 Python 主义,我们想首先摆脱它。

于 2013-10-26T19:43:03.193 回答