如何启动IPython内核并使用ZMQ套接字连接?

时间:2016-08-20 15:32:30

标签: python c++ qt ipython zeromq

我正在使用C ++(Qt)开发IPython的前端。

我设法在我的应用程序中嵌入Python并检索绘图并在我的GUI中显示这些。现在我想启动一个IPython内核并通过ZMQ套接字连接到它。

我找到了description与IPython内核的通信协议。但是,它没有说任何地方要连接的端口。所以有一个通信协议很好,但是如果我不知道使用哪个端口就完全没用。

文档提到'内核规范'并告诉我使用jupyter kernelspec list命令。这确实显示了一个目录,它只包含两个文件:logo-32x32.png和logo-64x64.png ......

如何找到我需要连接的端口,以便与我的IPython内核通信?

我通过从C ++ Qt应用程序运行以下Python代码来启动我的IPython内核:

import IPython
IPython.start_kernel(argv=[])

1 个答案:

答案 0 :(得分:2)

事实证明托马斯K是对的。在不同的进程中启动IPython / Jupyter内核的正确方法是:(以python3为例)

import jupyter_client
kernel_manager, kernel_client = jupyter_client.start_new_kernel(kernel_name='python3')

当我最初尝试这个时,我收到了一个权限错误。这是通过安装python3内核规范修复的(显然Jupyter不会自动执行此操作......):

python3 -m ipykernel install --user

然后你可以通过

获取端口
print(kernel_manager.get_connection_info())

应该可以使用这些端口通过零mq连接到内核。但是,kernel_client公开了一些与内核通信的方法,因此使用该方法可能更容易......