Как автоматически перезагрузить код, загруженный магией загрузки в блокнот Jupyter? - PullRequest
0 голосов
/ 28 мая 2019

Jupyter Notebook имеет магию %load, которая может загружать код в ячейку ноутбука.

%load start.py

Эта строка загружает содержимое start.py в текущую ячейку.Магия автоматически комментируется после выполнения.

# %load start.py
import numpy as np
import pandas as pd

Jupyter Notebook также имеет расширение %autoreload, которое может перезагружать модули перед выполнением кода.

%load_ext autoreload
%autoreload 2
from utils import load_data

Если есть изменения вload_data функция, это расширение может обнаруживать и автоматически перезагружать новую функцию перед выполнением.

Есть ли способ объединить функциональность этих двух?Другими словами, если содержимое start.py изменяется, как я могу автоматически обнаружить изменение и перезагрузить его в ячейку перед выполнением кода?

Например, если содержимое start.py теперь равно

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Я бы хотел, чтобы ячейка была перезагружена и стала:

# %load start.py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

1 Ответ

0 голосов
/ 28 мая 2019

Я думаю, что вы пытаетесь смешать вещи за пределы того, для чего они были предназначены.

Если вы хотите взломать, как вы упомянули, вы можете импортировать функцию из start.py, тогда %autoreload предоставит вам необходимую функциональность. Затем вы можете смешать с этим, если хотите увидеть содержимое файла .py:

with open("start.py") as f:
    print(f.read())

Вы можете легко скопировать и вставить в ячейку, если это необходимо.

...