如何在Jupyter中配置deepreload实现深度自动重载?
如何在Jupyter中实现深度自动重载(deepreload)
我之前在Jupyter中用以下代码实现模块自动重载:
%reload_ext autoreload %autoreload 2现在想改用IPython的
deepreload来实现深度重载(能递归重载依赖模块),但尝试了以下代码却没生效:import builtins from IPython.lib import deepreload builtins.reload = deepreload.reload %reload_ext autoreload %autoreload 2请问正确的实现方式是什么?
其实autoreload扩展本身就支持指定重载函数,不需要去替换builtins.reload——这就是你之前代码没生效的原因,因为autoreload内部并不会直接调用全局的reload方法。
你可以试试下面的正确写法:
from IPython.lib import deepreload # 加载autoreload扩展 %reload_ext autoreload # 设置自动重载模式为2(自动重载所有import的模块) %autoreload 2 # 关键配置:让autoreload使用deepreload进行深度重载 %config autoreload.reload = deepreload.reload
配置完成后,你修改任意模块(包括被导入的子模块)的代码后,Jupyter会自动递归重载所有相关的模块,不需要手动重启内核或者重新import。你可以通过修改模块代码后执行相关逻辑,验证修改是否即时生效,以此确认深度重载正常工作。
内容的提问来源于stack exchange,提问作者samol
相关产品推荐
相关产品推荐

