2016-11-19 5 views
4

У меня есть ноутбук Jupyter. В ячейке 1 я определил множество функций, которые нужно запускать перед другими вещами. Затем в следующих ячейках я начинаю приводить результат. Однако, когда я конвертирую в HTML, этот макет уродливый. Читатели должны прокручивать долгое время, чтобы увидеть результат, и они могут вообще не заботиться о функциях. Но я должен поставить код в этом порядке, потому что мне нужны эти функции.Python Jupyter Notebook: укажите порядок выполнения ячейки

Итак, мой вопрос: есть ли способ управлять порядком выполнения ячеек после того, как я нажму кнопку «Запустить все»? или есть способ, которым я мог бы сделать что-то вроде следующего. Я поместил все мои определения функций в ячейку 20, затем в ячейке 1, я мог бы сказать, что Jupyter что-то вроде «run cell 20».

Просто интересно, если это выполнимо. Спасибо.

+0

Существует расширение под названием ['init_cell'] (https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/master/src/jupyter_contrib_nbextensions/nbextensions/init_cell), которое добавляет кнопку на панель инструментов и« инициализирует "или запускает определенные ячейки всякий раз, когда ноутбук перезапускается. Для этого необходимо установить nbextensions, если он еще не установлен, и указать определенные ячейки через меню «Вид»> «Панель ячеек»> «Ячейка инициализации». – pylang

+0

Я лично запускаю блокноты дважды, чтобы решить проблему, которую вы имеете (используя 'if', чтобы запускать только первые ячейки на 2-й итерации). – pistache

+0

@pistache фактически я буду запускать ноутбук на ежедневной основе. Поэтому я хотел бы автоматизировать его с помощью nbconvert. – JOHN

ответ

3

Такая функциональность, насколько мне известно, пока недоступна в Jupyter. Однако, если вы действительно беспокоитесь о том, что у вас есть много определений функций в начале и вы хотите их скрыть, вы можете сделать следующий вариант:

  1. Определите функции в сценарии Python.
  2. Добавьте выполнение сценария к первой кодирующей клетке вашего ноутбука
  3. Добавить оставшуюся часть кода в последовательные ячейки записной
  4. Факультативны, показать его содержимое в конце ноутбука для удобства зрителей.
+0

Когда вы говорите «еще», вы имеете в виду, что они будут включены в будущий выпуск? Или в "jupyterlab"? Да, импорт как модуль звучит как лучшая вещь, которую я мог бы сделать сейчас. – JOHN

+0

Я пришел сюда, чтобы найти способ сделать преамбулу в конце, из-за [этой продуманной статьи о грамотном программировании и порядке представления кода] (https://getpocket.com/a/read/730903290). Мне нравится этот ответ, потому что он _mostly_ перемещает детали, а затем учитывает их отображение. Очень хорошая работа! – mike

4

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

0

Рассмотрите возможность использования nbextension Runtools, которое позволяет запускать выбранные ячейки.

Смежные вопросы