Лучший способ перезагрузить модули, которые изменились в Jupyter Lab? - PullRequest
1 голос
/ 27 января 2020

Проблема: мне нравится содержать в чистоте записные книжки i python в jupyter и сохранять служебные функции во внешнем файле, но при вызове вызывать их из записной книжки по мере необходимости.

Проблема в том, что когда я перемещаю завершенную функцию во внешний файл, мне нужно убить ядро ​​и перезапустить все, чтобы импортировать его!

Я попытался сделать обычное:

%load_ext autoreload
%autoreload 2

но это не похоже на работу.

Есть лучшие предложения?

1 Ответ

0 голосов
/ 27 января 2020

Вы можете использовать функцию magi c %run <filename>, где вы определили свои служебные функции.

Я очень хорошо использовал это, когда пишу новые служебные функции и хочу протестировать и улучшать их в блокноте Jupyter, не перезапуская все это каждый раз. Ознакомьтесь с главой I Python Magi c Команды Джейка ВандерПласа для

Подробности:

У меня есть файл с именем utils.py в папке с именем c:/jupytertest.

Utils.py:

import pandas as pd

def framer(df):
    df_out = df['parch'].to_frame()
    return(df_out)

И у меня есть следующее в ячейке ноутбука jupyter :

# standard imports
import os
import pandas as pd
os.chdir('C:/jupytertest/')

# run / reload utils
%run utils.py

# data
url = "https://raw.github.com/mattdelhey/kaggle-titanic/master/Data/train.csv"
titanic = pd.read_csv(url)

# test reloading of function from utils.py
values = framer(titanic)

print(values.tail(5))

Теперь каждый раз, когда я изменяю df_out = df['parch'].to_frame() на name или любой другой известный мне столбец, существует в наборе данных titani c, единственное, что мне нужно сделать, чтобы применить обновленную функцию в jupyter для сохранения utils.py и повторного запуска ячейки в блокноте.

Нет необходимости перезапускать ядро ​​в блокноте.

Извлечение I Python Волхвы c Команды в Python Справочнике по науке о данных от Джейка ВандерПласа для более подробной информации.

...