Jupyter Notebook - Волшебная функция: загрузите файл .py и запустите его - PullRequest
0 голосов
/ 19 апреля 2019

Я использую блокнот jupyter для создания документации по программному обеспечению (sphinx с nbsphinx).Я хотел бы включить некоторые .py файл в блокнот Jupyter.Эти файлы должны быть загружены и показаны в ячейке (потому что они должны появиться в документации позже), а также запускаться для получения желаемого результата (графики и текст).

Я обнаружил, что кто-то что-то спрашивалКак и некоторое время назад: Jupyter: Напишите пользовательскую магию, которая изменяет содержимое ячейки, в которой она находится Однако использование ответа не сработало для меня.

Мне пришлось сделать небольшую модификациюпотому что я не хочу комментировать саму магическую линию после выполнения ячейки.('#% lmagic \ n {}' -> '% lmagic \ n {}')

from __future__ import print_function
from IPython.core.magic import Magics, magics_class, line_magic

@magics_class
class MyMagics(Magics):

    @line_magic
    def lmagic(self, line):

        raw_code = 'print("Hello world!")'

        # Comment out this line if you actually want to run the code.
        self.shell.set_next_input('%lmagic\n{}'.format(raw_code), replace=True)

        # Uncomment this line if you want to run the code instead.
        self.shell.run_cell(raw_code, store_history=False)

        #import time
        #time.sleep(2)

ip = get_ipython()
ip.register_magics(MyMagics)

Выполнение в следующей ячейке:

%lmagic

Не будет отображать никакого вывода,Однако, если я добавлю короткий период сна (раскомментируя две строки в фрагменте кода), я могу наблюдать, что он отображается временно, а затем исчезает.Я предполагаю, что асинхронные вызовы функций и рендеринг играют роль.

Проверено на: Jupyter Notebook 5.7.8, IPython 7.4.0

Есть идеи, как это исправить?

Джулиан

...