繁体   English   中英

如何在 Jupyter Notebook 单元格中刷新 Python 导入?

[英]How to refresh a Python import in a Jupyter Notebook cell?

我有两个文件:

MyModule.py 我的笔记本.ipynb

我正在使用最新的 Jupyter Notebook 和最新的 Python。 我的笔记本中有两个代码单元。

单元#1

import some stuff
Run some code
(Keep everything in the environment takes about five minutes to run this cell).

单元#2

import MyModule
Execute code from MyModule

我想在 MyModule.py 中进行代码更改并重新运行Cell #2 ,但不重新启动 kernel( Cell #1做了很多工作,我不想每次都重新运行)。 如果我只是运行第二个单元格,则对 MyModule.py 所做的更改不会传播。 我做了一些挖掘,并尝试使用 importlib.reload。 Cell #2的实际代码:

from Nash.IOEngineNash import *
import importlib
importlib.reload(Nash.IOEngineNash)

不幸的是,这并不完全奏效。 如何在不重新启动 kernel 并从头开始运行的情况下将 MyModule.py(或实际上是 Nash/IOEngineNash.py)中的这些更改推送到我的笔记本中?

我在 jupyter notebook 中导入自定义脚本时遇到了类似的问题

尝试将模块作为别名导入,然后重新加载它


import Nash as nash
from importlib import reload
reload(nash)

为确保所有对旧版本模块的引用都已更新,您可能希望在重新加载后重新导入它,例如

import mymodule
reload(mymodule)
import mymodule

由于隐式依赖关系可能会出现问题,因为importlib.reload仅重新加载您要求它重新加载的(顶级)模块,而不是其子模块或外部模块。

如果你想递归地重新加载一个模块,你可以看看这个 gist ,它允许你简单地在笔记本单元格的顶部添加这样的一行:

%reload mymodule
import mymodule

这会递归地重新加载mymodule及其所有子模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM