Проблемы с выполнением кода get_ipython в Notebook с Papermill - PullRequest
0 голосов
/ 10 июля 2019

У меня есть блокнот, который переформатирует результаты из блокнота аналитического анализа для экспорта в слайды. Этот блокнот создает новые ячейки на основе количества передаваемых «типов деталей» и «параметров». Я использовал следующий код для создания новой ячейки, и он работает, когда я тестировал в блокноте:

def create_code_cell(cell_content, replace=False,):
    shell = get_ipython()
    payload = {
        "source":"set_next_input",
        "text":cell_content,
        "replace":replace,
    }
    shell.payload_manager.write_payload(payload, single=False)

Проблема, с которой я сталкиваюсь, состоит в том, что эта функция не создает ячейки при выполнении с Papermill.

Если я открою новую записную книжку, созданную на Papermill, и нажму Cells => Run Все ячейки будут сгенерированы.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 19 июля 2019

Papermill использует nbConvert под капотом, который запускает оболочку IPython без каких-либо инициированных протоколов обмена сообщениями в веб-браузере.Если вы запускаете IPython в оболочке и запускаете команды, которые вы дали, вывод не генерируется.Протоколы обмена сообщениями, которые устанавливаются при запуске ноутбука в браузере, - это то, что прослушивает эти обновления полезной нагрузки и создает из них новую ячейку.

Единственные другие решения, которые я видел для программного создания ячеек в ноутбукедля запуска используется JavaScript, который не будет выполняться, если вы не работаете в браузере, иначе он называется nbConvert.

Возможно, это именно то, что у вас уже есть, но не могли бы вы создать сгенерированный блокнот в такой форме?что, когда пользователь запускает его впервые в браузере, ноутбук «раскрывается»?

...