Часто я бы работал на модуле Python и добавить изменения в него в живых, которые я бы тогда хотел проверить немедленно. Кусок пирога! Добавьте изменения и снова выполните скрипт. Ну, это, конечно, способ, но, поскольку модули становятся больше, они имеют тенденцию импортировать другие модули или выполнять некоторые предварительную работу.
Со временем я разработал эту практику открытия Python REPL (хотя я рекомендую iPython или Console Jupyter для этого), импортируя модуль модуля In-прогресса и выписывая отдельные функции, которые я хотел бы проверить. Проблема в том, что когда я делаю изменения в коде Python (например, добавить новую функцию), они не сразу полезны, потому что ни Python Repl, ни iPython/Jupyter не будут автоматически перезагружать их.
Дайте мне код
Да, мы приходим к этому
Общий путь
Python 3 поддерживает встроенную перезагрузку модулей, используя функцию, называемую, хорошо умнее, перезагрузка
. Раньше он был встроенным функциями в Python 2, но это больше не так. Если вы используете Python 3.2+, вы должны импортировать его дополнительно:
Для Python 3.2 и 3.3:
import importlib importlib.reload(some_module)
Для Python 3.4+:
import imp imp.reload(some_module)
IPython/Jupyter Magic
Jupyter поставляется с набором расширений, применимых только к сеансам Jupyter/iPython, называется Магические средства Отказ Одна из этих «магических магических» – это возможность загружать пользовательские расширения, Один из которых позволяет автоматически перезагружать модули. Чтобы включить это, вы должны добавить следующие две команды, прежде чем любой импорт:
%load_ext autoreload %autoreload 2 # you can check out the the documentation for the rest of the autoreaload modes # by apending a question mark to %autoreload, like this: # %autoreload?
Таким образом, как только вы попадаете Сохранить
В вашем редакторе кода вы должны быть в состоянии снова запустить ячейку Jupyter или снова iPython, и если она вызывает ваш модуль, он должен автоматически вызывать последнюю версию.
Ссылки
Jupyter/iPyton: После редактирования модуля изменения не эффективны без перезапуска ядра – Toledle Base Base Python – перезагрузка подмодулей в iPython – переполнение стека
ПРИМЕЧАНИЕ: Этот пост впервые появился на мой блог
Оригинал: “https://dev.to/preslavrachev/live-reloading-of-python-modules-in-the-python-repl–ipython–jupyter-console-1d17”