Моя проблема в другом. или меньше этого: Как подключить ноутбук Jupyter к существующему ядру IPython? но пакет показал, что он больше не работает должным образом. Я внес в него некоторые изменения в код, чтобы он "работал", но проблемы все еще возникают.
Контекст: у меня есть программное обеспечение со встроенной версией Python3. . Сюда входит множество расширений C++, доступных через этот встроенный Python (в виде дополнительных встроенных модулей). Они доступны только через встроенный python3, запускаемый вместе с программным обеспечением, и могут использоваться для взаимодействия с программным обеспечением различными способами (например, аналогично пакету bpy в Blender). Он также включает в себя множество модулей (понимайте numpy, pandas, matplotlib и многие другие и т. д.)
Чтобы облегчить разработку, я «выставляю» этот встроенный Python и все модули как ядро Юпитера. Я могу успешно подключиться к нему извне, используя консоль Jupyter --existing kernel-.json, получить доступ ко всем модулям и использовать их для взаимодействия с программным обеспечением.
Проблема: для блокнотов или эквивалентов кода/скрипта не существует опции --existing.
Единственное решение, которое я нашел (тот, который использовался упомянутым здесь модулем: Как подключить блокнот Jupyter к существующему ядру IPython?) заключается в наличии специального класса менеджера ядра, который затем можно установить с помощью блокнота Jupyter --NotebookApp.kernel_manager_class=extipy.ExternalIPythonKernelManager --Session. ключ='b""'. Он работает путем перезаписи start_kernel и, как говорится: "Он запускает новое ядро посредством вызова super().start_kernel(...), но затем обращает свое внимание на ядро, которое было запущено внешний процесс Python. Перезапуск ядра
перезапустит ненужное ядро и оставит существующее ядро в покое."
Это файл основного класса файла ExternalIPythonKernelManager, но из-за чтобы, я полагаю, юпитер меняется, теперь он не работает (
Код: Выделить всё
super(ExternalIPythonKernelManager, self).start_kernel(**kwargs).result()
Код: Выделить всё
async def start_kernel(self, **kwargs):
kernel_id = await super(ExternalIPythonKernelManager, self).start_kernel(**kwargs)
if self._should_use_existing():
self._attach_to_latest_kernel(kernel_id)
return kernel_id
Код: Выделить всё
[I 14:33:17.997 NotebookApp] Kernel started: cdaf10a1-6af9-4f09-9e6f-c6298a0bb16e, name: python3
[IPKernelApp] ERROR | No such comm target registered: jupyter.widget.control
[IPKernelApp] WARNING | No such comm: 8563966b-82ac-4f35-8f9b-a98fceaf5f64
Вопросы:
- Есть идеи, что может пойти не так? Может ли возникнуть проблема с заменой неработающего кода, специфичного для торнадо, кодом на основе async/await?
- Есть ли какой-либо другой подход к подключению к существующему ядро для ноутбука Jupyter?
Подробнее здесь: https://stackoverflow.com/questions/726 ... hon-kernel