Включить расширение автозагрузки IPython перед импортом любого кода:
%load_ext autoreload
%autoreload 2
Я использую его с обычной оболочкой django, и она отлично работает, хотя и имеет некоторые ограничения:
Предостережения:
Перезагружать модули Python надежным способом, как правило, сложно, и могут произойти непредвиденные ситуации. % autoreload пытается обойти распространенные ловушки, заменяя объекты кода функций и части классов, ранее находившиеся в модуле, новыми версиями. Это заставляет работать следующие вещи:
- Функции и классы, импортированные с помощью «из xxx import foo», обновляются до новых версий при перезагрузке «xxx».
- Методы и свойства классов обновляются при перезагрузке, поэтому вызов ccoo () для объекта «c», созданного до перезагрузки, приводит к выполнению нового кода для «foo».
Некоторые из известных оставшихся предостережений:
- Замена объектов кода не всегда успешна: изменение @property в классе на обычный метод или метод на переменную-член может вызвать проблемы (но только для старых объектов).
- Функции, которые были удалены (например, с помощью мартышки) из модуля до его перезагрузки, не обновляются.
- Модули расширения C не могут быть перезагружены, и поэтому не могут быть автоматически перезагружены. *
источник: https://ipython.org/ipython-doc/3/config/extensions/autoreload.html#caveats
Еще один отличный вариант - написать свой код в отдельном скрипте и отправить его в оболочку django, например:
manage.py shell < my_script.py