importlib.reload()没有将文件重装到ipython notebook中

时间:2018-06-11 04:00:01

标签: python ipython jupyter-notebook jupyter-lab python-importlib

我在Jupyter Lab运行了一个ipython笔记本。它运行的函数使用我制作的名为“Myfile.py”的外部模块中的变量。

Myfile.py包含一些最初定义的变量:

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

我对Myterms中的Myfile.py列表进行了一些编辑,然后将更改保存到文件中。

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

我想要做的是将Myterms列表从Myfile.py重新加载到笔记本中,这样当我调用列表中的变量时,它们会反映已经发生的变化。

我一直在使用this example的代码版本:

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函数,但并未被覆盖。在做了一些更多的研究后this answer可能会提供一些线索,但是我找不到解决方法。

1 个答案:

答案 0 :(得分:2)

我想您正在寻找: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

来源:autoreload