2016-08-20 65 views
1

我正在使用C++(Qt)進行IPython的前端工作。如何啓動IPython內核並使用ZMQ套接字連接?

我設法將Python嵌入到我的應用程序中,並檢索圖並在我的GUI中顯示這些圖。現在我想啓動IPython內核並通過ZMQ套接字連接到它。

我發現一個description與IPython內核的通信協議。但是,它不會在任何地方連接哪個端口。所以有一個通信協議是很好的,很好,但如果我不知道要使用哪個端口,則完全沒有用處。

該文檔提到'內核規格',並告訴我使用jupyter kernelspec list命令。這確實給我看了一個目錄,它只包含兩個文件:logo-32x32.png和logo-64x64.png ...

如何找到我需要連接的端口,與我的IPython內核進行通信?

我從我的C運行下面的Python代碼++ Qt的應用程序開始我IPython的內核:

import IPython 
IPython.start_kernel(argv=[]) 
+0

請查看我更新後的['ipy_repl.py']版本(https:// gist (SublimeREPL)(https://packagecontrol.io/packages/SublimeREPL)插件[Sublime Text](https://sublimetext.com)編程編輯器的插件.github.com/MattDMo/6cb1dfbe8a124e1ca5af)。那裏沒有Sublime特定的API。基本上,它可以與IPython一起使用到4.1.1以及jupyter_console到4.1.0(它似乎不適用於IPython 4或任何版本的5的更高版本),以在Sublime視圖中建立連接並運行IPython/Jupyter內核,包括利用其自動完成功能。 – MattDMo

+0

'start_kernel'在當前進程中啓動一個內核。它聽起來像你想要的是一個獨立進程中的內核,你從應用程序進程連接到這個進程。爲此,您可以使用[jupyter_client](http://jupyter-client.readthedocs.io/en/latest/api/manager.html)模塊。你可以看看像Spyder這樣的應用程序來看看他們做了什麼。 –

回答

1

原來托馬斯鉀含量的權利。開始在不同的過程中的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公開了一些與內核進行通信的方法,因此使用該方法可能更容易...