jupyter notebook自动更新导入的自定义模块

1,007 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

@[toc]

自动更新导入的自定义模块

ref:

一日一技:在 Jupyter 中如何自动重新导入特定的 模块?

出现的问题:

当自定义模块的功能逻辑发生变化时,运行中的jupyter notebook不会自动导入已更新过的模块,它只会保留最先运行时的模块

解决办法:

  1. 手动控制重新导入,作用当前所在Cell,因此不是很方便

    importlib.reload(xx_module)
    
  2. 自动重新导入特定模块,作用整个ipynb,要求放在第一次使用该模块之前

    %load_ext autoreload
    %autoreload 1
    %aimport analyze
    

    第1行启动autoreload机制。第2行,设置自动加载通过%aimport导入的模块。第3行使用%aimport导入analyze模块。

  3. 自动重新导入所有模块,作用整个ipynb,最好放在最开头,能在每个Cell运行时都重新导入一次所有模块

    %load_ext autoreload
    %autoreload 2
    

    %autoreload后面的参数被设置为2时,每次运行任意一个 Cell,都会自动重新加载所有import xxx导入的模块。这样做的代价是,运行会慢一些。