les*_*aul 2 python ipython python-importlib jupyter-notebook jupyter-lab
我有一个在 Jupyter Lab 中运行的 ipython 笔记本。它正在运行一个函数,该函数使用我创建的名为“Myfile.py”的外部模块中的变量。
Myfile.py 包括一些最初定义的变量,如下所示:
Myterms = ['honda accord', 'ferrari', 'mazerati', 'dodge dumpster']
Run Code Online (Sandbox Code Playgroud)
我对中的Myterms列表进行了一些编辑Myfile.py,然后将更改保存到文件中。
Myterms = ['Nissan Leaf', 'Tesla Roadster']
Run Code Online (Sandbox Code Playgroud)
我想要做的是将Myterms列表重新加载Myfile.py到笔记本中,这样当我调用列表中的变量时,它们会反映所做的更改。
我一直在使用此示例中的代码版本:
import myfile
import importlib
def reloader(myfile):
importlib.reload(myfile)
from myfile import Myterms
reloader(myfile)
print(Myterms)
Run Code Online (Sandbox Code Playgroud)
但该行print(myterms)仍然打印出来
['honda accord', 'ferrari', 'mazerati', 'dodge dumpster']
Run Code Online (Sandbox Code Playgroud)
更新:出于某种原因,旧Myterms列表似乎在内存中徘徊,尽管具有该importlib.reload功能,但并未被覆盖。在做了更多研究之后,这个答案可能会提供一些关于原因的线索,但我找不到解决方法。
我猜您正在寻找:IPython 中可用的Autoreload。
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
Run Code Online (Sandbox Code Playgroud)
来源:自动重载
| 归档时间: |
|
| 查看次数: |
2182 次 |
| 最近记录: |