ipython 自动重新加载不起作用

Dea*_*nLa 6 python ipython python-3.x jupyter-notebook

autoreload 在子目录中根本不适合我。

目录结构:

run.ipynb
oof.py
pertussis/
    |-- __init__.py
Run Code Online (Sandbox Code Playgroud)

run.ipynb我有(用笔记本运行):

from pertussis import *
check() #defined in the module
Run Code Online (Sandbox Code Playgroud)

这不起作用。我尝试了一切。我在代码中,在配置文件中,到处都添加了 autoreload 魔法。我还将模块的文件夹添加到 sys.path 列表中。从来没有重装过。我尝试oof.py从笔记本重新加载常规文件,而不是直接加载模块。

oof.py 上我有:

from pertussis import *
def check_2():
  print ("Hello")
Run Code Online (Sandbox Code Playgroud)

现在发生的事情是 check_2 已成功自动重新加载,但来自模块的检查仍未重新加载。

似乎没有任何效果,我迷路了。

Blu*_*luu 4

抱歉回复晚了,我刚刚偶然发现了类似的问题。

在您的run.ipynb中,您是否尝试过:

import pertussis
pertussis.check()
Run Code Online (Sandbox Code Playgroud)

或者

%load_ext autoreload 
%autoreload 1
Run Code Online (Sandbox Code Playgroud)

然后

%aimport pertussis
check = pertussis.check  # optional shortcut
check()
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了所有这些。原因可能是因为 ipython 很难进行深度导入。我将所有子模块移动到“.py”文件中,而不是带有 init 的子文件夹中。 (3认同)