Рубрики
Без рубрики

Live-Reloading из модулей Python в Python Reff / iPython / Jupyter Console

Часто я бы работал на модуле Python и добавить изменения в нее живут, что я хотел бы проверить я … Теги с Python, Jupyter, совет.

Часто я бы работал на модуле 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”