如何自动重新加载Jupyter Notebook中由加载魔术加载的代码?

时间:2019-05-28 13:44:42

标签: python jupyter-notebook ipython-magic

Jupyter Notebook具有%load的魔力,可以将代码加载到笔记本的单元格中。

%load start.py

此行将start.py的内容加载到当前单元格中。执行后,魔术会自动注释掉。

# %load start.py
import numpy as np
import pandas as pd

Jupyter Notebook还具有%autoreload扩展名,可以在执行代码之前重新加载模块。

%load_ext autoreload
%autoreload 2
from utils import load_data

如果load_data函数发生更改,此扩展名可以在执行前检测并自动重新加载新函数。

有没有办法将这两个功能结合在一起?换句话说,如果start.py的内容发生更改,如何在运行代码之前自动检测到更改并将其重新加载到单元格中?

例如,如果start.py的内容现在是

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

我希望将单元格重新加载为:

# %load start.py
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试将事情超出预期的范围。

如果您想要入侵,如您提到的那样,可以从start.py内导入一个函数,那么%autoreload将为您提供所需的功能。如果您想查看.py文件的内容,则可以与此混合使用:

with open("start.py") as f:
    print(f.read())

然后,您可以根据需要轻松地复制并粘贴到单元格中。