Чтобы получить имя работающей записной книжки Jupyter, я сначала добавил следующую строку в ~ / .jupyter / custom / custom.js
// Create a nb_name variable with the name of the notebook
IPython.notebook.kernel.execute('nb_name = "' + IPython.notebook.notebook_name + '"');
Затем на своей записной книжке при запуске ячейкис:
print(nb_name)
Я получаю:
NameError Traceback (most recent call last)
<ipython-input-1-7e37f787d8df> in <module>()
----> 1 print(nb_name)
NameError: name 'nb_name' is not defined
Чтобы решить эту проблему, мне нужно добавить первую строку с командой оповещения:
alert("hello world from custom.js")
// Create a nb_name variable with the name of the notebook
IPython.notebook.kernel.execute('nb_name = "' + IPython.notebook.notebook_name + '"');
ЗатемКогда я загружаю свой блокнот, появляется окно с предупреждением, и как только я его закрываю, я получаю имя блокнота, как и ожидалось.
Как я могу заставить его работать без каких-либо действий со стороны пользователя (я использую блокнот версии 5.0.0 и, поскольку я не являюсь администратором сервера, не могу его обновить)?
РЕДАКТИРОВАТЬ:
Вопрос в Ожидание готовности ядра при выполнении кода через ядро Jupyter (Jupyter Notebookрасширение) частично решил проблему.Файл Custom.js, содержащий:
Jupyter.notebook.events.one('kernel_ready.Kernel', () => {
// Create a nb_name variable with the name of the notebook
IPython.notebook.kernel.execute('nb_name = "' + IPython.notebook.notebook_name + '"');
});
Возвращает имя записной книжки, как и ожидалось.Теперь проблема заключается в том, что я все еще получаю сообщение об ошибке, упомянутое выше, когда я «Перезапустить и запустить все».Любые комментарии или идеи приветствуются.