【问题标题】:repl in webpage, best way to go about it?repl 在网页中,最好的方法是什么?
【发布时间】:2013-10-26 18:47:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python ipython zeromq read-eval-print-loop ipython-notebook


    【解决方案1】:

    IPython notebook webapp 与作为 ZMQ 与内核对话的桥梁的龙卷风网络服务器讨论,对于我所知道的那些,内核可能是 python、julia、haskell、OCamel、nodejs、ruby、scala。只要内核符合the message spec(和不错的blog post about messaging protocol from the guy who wrote IHaskell),它对于只发送字符串/接收结果的前端是透明的。

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

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

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

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

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

    [2] 这是我们经常谈论的话题,但我们首先要摆脱一些 Python 主义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2011-08-09
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多