модуль 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
.
что я делаю не так? Кажется, я не понял, как это должно работать.