Я использую блокнот 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
Есть идеи, как это исправить?
Джулиан