2

我有一个在 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到笔记本中,这样当我调用列表中的变量时,它们会反映所做的更改。

我一直在使用此示例中的代码版本:

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功能并没有被覆盖。在做了更多研究之后,这个答案可能会提供一些关于原因的线索,但我找不到解决方法。

4

1 回答 1

8

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

来源:自动重装

于 2018-06-11T17:35:13.440 回答