我目前正在为IPython构建一个Erlang语言内核后端,我正在控制台中测试它。
我的工作:
shell
,heartbeat
,control
,iopub
套接字创建zmq绑定。如果你还在我身边,那么这一切都有效。
出现第一个IPython In[1]:
提示符,我可以输入代码,将其发送到后端并从ipython接收execute_request消息。
但是,我的问题是在接收到execute_request的事件序列之后:
发送这些消息后,没有任何反应。我没有收到来自IPython的消息,代码执行也没有输出到控制台,也没有出现新的提示,要求用户提供更多的输入。
我只是想知道我是以正确的顺序发送邮件,还是发送了正确的邮件?
答案 0 :(得分:0)
我已经在这个问题上工作了几个星期,而且我找不到控制台问题的解决方案。
但是,我找到了一种允许多个输入的解决方法。
首先我没有使用我之前使用的语言配置文件。这个语言配置文件只是告诉IPython使用什么内核以及使用什么加密字符串。
下一步,我开始使用笔记本而不是控制台。希望它能提供更多的投入。而且,确实如此。 :)
要使用指定的内核启动ipython,我使用了以下命令:
ipython2 notebook --KernelManager.kernel_cmd='["/usr/lib/erlang/bin/escript", "ipython_kernel.erl", "{connection_file}"]' --Session.key="" --Session.keyfile=""
在上面的命令中,我指定了内核命令,并提供以下内容:
下一步,我将会话密钥和会话密钥文件指定为空字符串。
提供内核是正确编写的,它允许多个代码条目和markdown到ipyton / ierlang。
以下是ierlang早期阶段的样本:
我希望这篇文章可以帮助那些努力为ipython开发内核的人。 :)
我终于找到了问题所在。事实证明,当通过zmq发送erlang字符串(整数列表)时,它们会将IPython的消息解析器作为一个整数列表到达。
我认为,他们会自动转换为字符串,但他们没有。
解决方案是编辑IPython/kernel/zmq/session.py
文件以允许它解析erlang字符串。
这允许输出提示出现在控制台和IErlang的笔记本版本中。