модуль 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.

что я делаю не так? Кажется, я не понял, как это должно работать.

1 ответов


изменить %autoreload 1 до %autoreload 2 Как сказал dashesy, старая версия или ошибка.