IPython笔记本:如何在特定的Python文件中重新加载所有模块?
我在一个文件中定义了许多模块,并将myFile import*中的IPython笔记本:如何在特定的Python文件中重新加载所有模块?,python,ipython,ipython-notebook,Python,Ipython,Ipython Notebook,我在一个文件中定义了许多模块,并将myFile import*中的添加到我的ipython笔记本的第一行,这样我就可以将它用作本笔记本中其他部分的依赖项 目前我的工作流程是: 修改myFile 重新启动Ipython内核 重新运行Ipython中的所有代码 有人知道是否有一种方法可以在不需要重新启动Ipython内核的情况下重新加载myFile中的所有模块吗?谢谢 重新启动并打开笔记本后,应通过运行所有单元格来启动工作流。在顶部菜单中,在执行任何其他操作之前,首先从ipython文档中选择“单元
添加到我的ipython笔记本的第一行,这样我就可以将它用作本笔记本中其他部分的依赖项
目前我的工作流程是:
修改myFile
重新启动Ipython内核
重新运行Ipython中的所有代码
有人知道是否有一种方法可以在不需要重新启动Ipython内核的情况下重新加载myFile
中的所有模块吗?谢谢 重新启动并打开笔记本后,应通过运行所有单元格来启动工作流。在顶部菜单中,在执行任何其他操作之前,首先从ipython文档中选择“单元格->全部运行”:
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: from foo import some_function
In [4]: some_function()
Out[4]: 42
In [5]: # open foo.py in an editor and change some_function to return 43
In [6]: some_function()
Out[6]: 43
您还可以通过执行以下操作将自动重新加载配置为自动进行:
ipython配置文件创建
并将以下内容添加到~/.config/ipython/profile\u default/ipython\u config.py
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
c.InteractiveShellApp.exec_lines.append('print("Warning: disable autoreload in ipython_config.py to improve performance.")')
注意:如果重命名函数,则需要重新运行import
语句使用importlib
import importlib
importlib.reload(my_awesome_python_script)
因此,当您在后端对my_awesome\u python\u脚本
进行更改时,无需重新启动内核或重新运行整个笔记本。重新运行这个单元。
如果您在内存密集型数据集上做了大量工作,这将非常有用,但这也需要重新启动IPython内核,对吗?@WeiChen不,您不必重新启动IPython内核,您可以随时执行“Cell->Run all”。但这不起作用,由于Ipython笔记本不会通过运行“Run all”导入最新版本的myFile
,相反,它会假设它已经被导入并跳过该单元格。我不知道为什么会被否决,但这是一个合理的答案,对我来说很有效,@JakeWagner是的,有时我不确定为什么否决投票的人会这么快回答。无论如何,谢谢你的支持投票!我不喜欢最后一句话(“如果你重命名…):为什么Jupyter不能自动这么做?