【问题标题】:importlib.reload() not reloading file into ipython notebookimportlib.reload() 没有将文件重新加载到 ipython 笔记本中
【发布时间】:2018-06-11 04:00:00
【问题描述】:

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

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

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

我对@9​​87654326@ 中的Myterms 列表进行了一些编辑,然后将更改保存到文件中。

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

【问题讨论】:

  • 使用您发布的代码,searchterms 将是一个模块,而不是一个列表。
  • 我只是更改了模块名称以使事情更清晰。
  • 你没试过myfile = importlib.reload(myfile)
  • 我刚做了。它没有用。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多