модуль autoupdate в ноутбуке IPython / jupyter
я написал свой собственный модуль, который в качестве следующей структуры:
mymodule/
├── __init__.py
├── part1.py
├── part2.py
├── part3.py
└── part4.py
для тестирования моего модуля я использую IPython и / или Jupyter notebook (ранее IPython Notebook). Как обычно, я импортирую модуль как
import mymodule
допустим, я редактирую код в part2.py и хотите использовать обновленную версию моего модуля. Сначала я подумал, что просто повторно импортирую модуль по import mymodule будет делать работу, но это не так. Чтобы полностью перезагрузить модуль, я должен закрыть оболочку IPython или перезапустите ядро jupyter и начните заново, импортировав mymodule.
однако, возвращаясь к docs, IPython обеспечивает функцию автоматического обновления под названием autoreload, который обеспечивает различные режимы и может быть активирован следующим образом:
%load_ext autoreload
%autoreload 1
%aimport mymodule
используя оба моих фрагмента, я импортирую mymodule вот так:
%load_ext autoreload
%autoreload 1
%aimport mymodule
import mymodule
# let's do something with the module here
однако, даже с активированным autoreload 1 или autoreload 2 ни IPython, ни jupyter не делают то, что я ожидаю от них, и я еще нужно выйти из оболочки IPython или перезапустить ядро jupyter, чтобы использовать отредактированный код part2.py, которая является частью mymodule.
что я делаю не так? Кажется, я не понял, как это должно работать.