python - importlib.reload() 没有将文件重新加载到 ipython 笔记本

我有一个在 Jupyter Lab 中运行的 ipython notebook。它正在运行一个函数,该函数使用我制作的名为“Myfile.py”的外部模块中的变量。

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

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

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

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

我想做的是将 Myfile.py 中的 Myterms 列表重新加载到笔记本中,这样当我调用列表中的变量时,它们会反射(reflect)出更改被做了。

我一直在使用来自 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可能会提供一些关于原因的线索,但我找不到解决方法。

最佳答案

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

关于python - importlib.reload() 没有将文件重新加载到 ipython 笔记本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50790348/

相关文章:

android-studio - 无法解析 : com. google.android.gms :p

r - 安装旧包 R

image-processing - 如何使用网格分割图像并保留透明边界框

php - 在 google drive api 的根目录中创建文件夹并将文件上传到该文件夹

c# - 从 JSON 中提取第一个元素

python - 属性错误 : 'str' object has no attribute 'Sub

apache-spark - Apache Spark 2.0 (PySpark) - DataFr

scala - 我如何处理下面udf中的空指针异常错误

data-structures - 如何将文本文件读入 Erlang 中的 map ?

react-native - 如何在 createBottomTabNavigator 中获取背景图