importlib.reload () не перезагружает файл в блокнот ipython - PullRequest
0 голосов
/ 11 июня 2018

У меня есть ноутбук ipython, работающий в Jupyter Lab.Он запускает функцию, которая использует переменные из внешнего модуля, который я создал под названием «Myfile.py».

Myfile.py включает несколько переменных, которые изначально определены следующим образом:

Myterms = ['honda accord', 'ferrari', 'mazerati', 'dodge dumpster']

Я внес несколько изменений в список Myterms в Myfile.py, а затем сохранил измененияв файл.

Myterms = ['Nissan Leaf', 'Tesla Roadster']

Я хочу перезагрузить список Myterms из Myfile.py в записную книжку, чтобы при вызове переменных в списке они отражали внесенные изменения,

Я использовал версию кода из этого примера :

import myfile
import importlib

def reloader(myfile):
    importlib.reload(myfile)
    from myfile import Myterms

reloader(myfile)

print(Myterms)

Но строка print(myterms) все еще печатает

['honda accord', 'ferrari', 'mazerati', 'dodge dumpster']

ОБНОВЛЕНИЕ: По какой-то причине старый список Myterms, кажется, висит в памяти и не перезаписывается, несмотря на функцию importlib.reload.После дополнительных исследований этот ответ может дать некоторые подсказки о том, почему, но я не могу найти обходной путь.

1 Ответ

0 голосов
/ 11 июня 2018

Полагаю, вы ищете: Автозагрузка доступно в IPython.

In [1]: %load_ext autoreload

In [2]: %autoreload 2

In [3]: from foo import some_function

In [4]: some_function()
Out[4]: 42

In [5]: # open foo.py in an editor and change some_function to return 43

In [6]: some_function()
Out[6]: 43

Источник: Автозагрузка

...