好的,所以我在浏览器中尝试一个简单的python repl。我想在文本输入中放入一些python代码,然后点击“发送”按钮,然后返回评估它的结果。
我正在使用flask,有一个路由,它调用了stdlib eval
函数,然后将其发回。我还在使用zeroMQ进行简单的服务器/客户端设置。我觉得我错过了一些东西......
做这种事情的标准方法是怎样的?像repl.it和skulpt这样的项目正在进行,但他们正在编译为javascript。 Ipython notebook正在使用zeroMQ,我不知道他们这样做的确切方式,发送一些带有pub / sub设置的python字符串然后使用exec
我想....
我想我想将repl's嵌入到支持多种语言的网页中,但我首先使用的是python。也许其他人已经这样做了?任何帮助表示赞赏!
答案 0 :(得分:1)
IPython笔记本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希望能够使用不同语言的语言启动笔记本,并且他们还希望在浏览器中比REPL(如QtConsole)更接近[2]。
[1]我有偏见,我是一名IPython开发者。
[2]我们经常谈论的事情,但我们有一些Python主义,我们想先摆脱它。