我正在使用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=[])
答案 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
公开了一些与内核通信的方法,因此使用该方法可能更容易......