Магия Ipython, которая заменяет некоторый текст и запускает ячейку впоследствии
Я пытаюсь создать магию ipython, немного похожую на% pylab, но более явную (вероятно, продолжение):
При запуске он в идеале заменит себя на закомментированную версию + добавит строки, которые выполняют импорт, и запустит ячейку:
%mymagic
# some code
превратится в
# %mymagic
import numpy as np
%matplotlib qt
import matplotlib.pyplot as plt
# ..some other imports
# the same code from earlier
Мысль о том, что не только магия будет делать только очень явные вещи - т.е. вы действительно увидите код, который он запускает / он будет явно сохранен в записной книжке, но также, как обычно, удобно - только несколько быстрых символов для импорта (полезно в консолях).
Проблема для меня - запустить ячейку после ее замены (я использовал %load
магия в качестве примера, поэтому я использую set_next_input
изменить ячейку). Я попытался запустить импорт внутри магии (то есть, как именно %pylab
сделал это), а затем изменив ячейку, но у этого есть недостаток, заключающийся в том, что ячейка остается в состоянии "не запущен" и не работает, а затем вызывается магия в консоли ipython (для выхода нужно нажать клавишу ввода явного текста). Кроме того, один и тот же код должен поддерживаться дважды (один для "печати", а второй - для фактического импорта при выполнении магии)
Любой совет, как подойти к этому? Спасибо