IPython 笔记本:如何重新加载特定 Python 文件中的所有模块?
IPython notebook: how to reload all modules in a specific Python file?
我在一个文件中定义了很多模块,并将 from myFile import *
添加到我的 ipython 笔记本的第一行,这样我就可以将它用作笔记本中其他部分的依赖项。
目前我的工作流程是:
- 修改
myFile
- 重启Ipython内核
- 重新运行 Ipython 中的所有代码。
有谁知道是否有一种方法可以重新加载 myFile
中的所有模块而无需重新启动 Ipython 内核?谢谢!
您应该在 运行 所有单元格重新启动并再次打开笔记本后开始您的工作流程。在顶部菜单中,在执行任何其他操作之前,首先 select "Cell->Run all"
来自 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 profile create
并将以下内容添加到 ~/.config/ipython/profile_default/ipython_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
语句
使用导入库!
import importlib
importlib.reload(my_awesome_python_script)
因此,当您在后台更改 my_awesome_python_script
时,无需重新启动内核或重新 运行 整个笔记本。只需重新运行这个单元格。
如果您在内存密集型数据集上做了很多工作,这将非常有用
我在一个文件中定义了很多模块,并将 from myFile import *
添加到我的 ipython 笔记本的第一行,这样我就可以将它用作笔记本中其他部分的依赖项。
目前我的工作流程是:
- 修改
myFile
- 重启Ipython内核
- 重新运行 Ipython 中的所有代码。
有谁知道是否有一种方法可以重新加载 myFile
中的所有模块而无需重新启动 Ipython 内核?谢谢!
您应该在 运行 所有单元格重新启动并再次打开笔记本后开始您的工作流程。在顶部菜单中,在执行任何其他操作之前,首先 select "Cell->Run all"
来自 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 profile create
并将以下内容添加到 ~/.config/ipython/profile_default/ipython_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
语句
使用导入库!
import importlib
importlib.reload(my_awesome_python_script)
因此,当您在后台更改 my_awesome_python_script
时,无需重新启动内核或重新 运行 整个笔记本。只需重新运行这个单元格。
如果您在内存密集型数据集上做了很多工作,这将非常有用