Как запустить ядро ​​IPython и подключиться с помощью сокетов ZMQ?

Я работаю над внешним интерфейсом IPython в C ++ (Qt).

Мне удалось внедрить Python в мое приложение, получить графики и показать их в моем графическом интерфейсе. Теперь я хочу запустить ядро ​​IPython и подключиться к нему через сокеты ZMQ.

Я нашел описание для протокола связи с ядрами IPython. Тем не менее, это не говорит в любом месте к каким портам подключаться. Поэтому неплохо иметь протокол связи, но совершенно бесполезно, если я не знаю, какие порты использовать.

Документация упоминает «спецификации ядра» и говорит мне использовать jupyter kernelspec list команда. Это действительно показывает мне один каталог, который содержит только два файла: logo-32×32.png и logo-64×64.png …

Как мне найти порты, к которым мне нужно подключиться, чтобы общаться с моими ядрами IPython?

Я запускаю свое ядро ​​IPython, выполняя следующий код Python из моего приложения C ++ Qt:

import IPython
IPython.start_kernel(argv=[])

2

Решение

Оказывается, Томас К был прав. Правильный подход для запуска ядра 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())

Должно быть возможно использовать эти порты для подключения к ядру через zero-mq. Тем не менее kernel_client предоставляет несколько методов для взаимодействия с ядром, так что может быть проще использовать этот подход …

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]