Встраивать вывод HTML Jupyter на веб-страницу

Я хочу встроить HTML-вывод Jupyter на свою собственную веб-страницу. Причина этого в первую очередь в том, что я могу использовать Jupyter из своего собственного веб-приложения, а также получать доступ к своим исследовательским блокнотам из любой точки мира через Интернет.

Типичный сценарий использования: я нажимаю кнопку на своей странице, и на мою страницу будет вставлен iframe; Затем Jupyter будет запущен на бэкэнде (если он еще не запущен), а вывод Jupyter будет «передан по конвейеру» в iframe, чтобы я мог использовать Jupyter на своей странице.

Наивным решением было использовать <iframe>, но возникли две проблемы:

  1. Проблема междоменной политики iframe
  2. Jupyter сгенерировал одноразовый токен аутентификации при первом запуске

Могу ли я как-нибудь преодолеть эти проблемы, чтобы встроить вывод Jupyter на свою собственную веб-страницу?


person Homunculus Reticulli    schedule 07.01.2017    source источник
comment
вы сказали jupyter, поэтому я предполагаю, что вы имеете в виду jupyter notebook ... вам нужно будет взглянуть на github.com/ jupyter / nbconvert   -  person Hynek Los kamute    schedule 01.02.2017


Ответы (3)


вам нужно проверить nbconvert - https://github.com/jupyter/nbconvert

у вас есть 2 варианта.

  1. использовать командную строку для запуска записной книжки, а затем разрешить веб-серверу серверу .html
  2. использовать python и библиотеку nbconvert

вот короткий код: если вы хотите показать уже сгенерированный:

from nbconvert.preprocessors import ExecutePreprocessor import nbformat from nbconvert import HTMLExporter from nbconvert.preprocessors.execute import CellExecutionError src_notebook = nbformat.reads(ff.read(), as_version=4) #where ff is file opened with some open("path to notebook file")
html_exporter = HTMLExporter() html_exporter.template_file = 'basic' #basic will skip generating body and html tags.... use "all" to gen all.. (body, resources) = html_exporter.from_notebook_node(src_notebook) print(body) #body have html output

если вы хотите также запустить ноутбук, то:

from nbconvert.preprocessors import ExecutePreprocessor import nbformat from nbconvert import HTMLExporter from nbconvert.preprocessors.execute import CellExecutionError src_notebook = nbformat.reads(ff.read(), as_version=4) #where ff is file opened with some open("path to notebook file")
ep = ExecutePreprocessor(timeout=50, kernel_name='python3') ep.preprocess(src_notebook, {}) html_exporter = HTMLExporter() html_exporter.template_file = 'basic' #basic will skip generating body and html tags.... use "all" to gen all.. (body, resources) = html_exporter.from_notebook_node(src_notebook) print(body) #body have html output

person Hynek Los kamute    schedule 01.02.2017
comment
+1 за ваш вклад. Это похоже на то, что я пытаюсь сделать. Я попробую, и если сработает, приму ваш ответ. Кстати, похоже, вы импортируете некоторые нестандартные модули (чтобы получить доступ к nbformat и HTMLExporter) - из каких модулей вы импортируете? Спасибо - person Homunculus Reticulli; 01.02.2017
comment
Я добавил импорт ... его актуальная привязка из приложения ... просто имейте в виду, выполнение записных книжек происходит не быстро ... я обычно запускаю какой-то cron в фоновом режиме для запуска записных книжек, а скрипт только конвертирует без выполнения ... - person Hynek Los kamute; 01.02.2017
comment
Извините, я совершенно не понимаю, что вы имеете в виду под своим заявлением: я добавил импорт ... его актуальная привязка из приложения ... Пожалуйста, поясните. - person Homunculus Reticulli; 01.02.2017

Вы можете сделать это напрямую с помощью препроцессора html_embed:

$ jupyter nbconvert  --to html_embed  Annex.ipynb
[NbConvertApp] Converting notebook Annex.ipynb to html_embed
/usr/local/lib/python3.6/site-packages/nbconvert/filters/datatypefilter.py:41: UserWarning: Your element with mimetype(s) dict_keys(['image/pdf']) is not able to be represented.
  mimetypes=output.keys())
[NbConvertApp] Writing 2624499 bytes to Annex.html

Как ни странно, мне не удалось найти прямую ссылку в руководстве от nbconvert.

person meduz    schedule 27.11.2018

Вы можете использовать ipython nbconvert - -to html notebook.ipynb, чтобы получить html-код для того же. Вот руководство о том, как это сделать. Ведение блога с помощью записной книжки IPython - см. здесь

Если ваш веб-сайт пишет на python, используйте python embed docs Также это руководство - см. здесь

или используйте kyso.io Вот как встроить Jupyter с помощью платформы Kyso - см. здесь

(отказ от ответственности - я основатель kyso)

person hdm    schedule 01.02.2018