revert / undo / redo / refresh, `импорт` в интерактивном сеансе Python

Возможный дубликат:
Как мне выгрузить (перезагрузить) модуль Python?

Можно ли «обновить» импортированный модуль в Python? Вариант использования: интерактивное улучшение модуля; до сих пор я всегда полностью перезапускаю интерактивный сеанс, чтобы перезагрузить мои обновленные источники.

Есть ли способ лучше?


person xtofl    schedule 08.08.2011    source источник
comment
В принятом ответе на этот вопрос показано, как перезагрузить модуль (работает в интерактивном режиме и в сценариях).   -  person Björn Pollex    schedule 08.08.2011
comment
@ Бьёрн Поллекс: спасибо, это то, что мне нужно.   -  person xtofl    schedule 08.08.2011


Ответы (1)


Предположим, что модуль с именем foo уже присутствует в пространстве имен, но вы внесли некоторые изменения в исходный код и хотите, чтобы новый код был импортирован, используйте:

reload(foo)

Здесь есть подводный камень: если вы использовали from foo import bar и внесли последующие изменения в свою функцию bar, то перезагрузка не сработает для вас. В этих случаях вы можете также использовать import foo и вызвать foo.bar(), чтобы reload изменения вступили в силу немедленно.

Если вы часто работаете в таком интерактивном сеансе, возможно, вам будет интересно использовать ipython и добавить следующие строки в свой ipy_user_conf.py файл:

# For autoreloading of modules (%autoreload, %aimport)    
import ipy_autoreload
person wim    schedule 09.08.2011