IPython笔记本:如何在特定的Python文件中重新加载所有模块?

问题描述 投票:5回答:3

我在文件中定义了许多模块,并将from myFile import *添加到我的ipython笔记本的第一行,以便可以将其用作该笔记本中其他部件的依赖项。

当前我的工作流程是:

  1. 修改myFile
  2. 重新启动Ipython内核
  3. 重新运行Ipython中的所有代码。

有人知道是否有一种方法可以在不需要重新启动Ipython内核的情况下重新加载myFile中的所有模块吗?谢谢!

python ipython ipython-notebook
3个回答
13
投票

从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语句


0
投票

使用importlib!

import importlib
importlib.reload(my_awesome_python_script)

因此,当您在后端的my_awesome_python_script中进行更改时,无需重新启动内核或再次重新运行整个笔记本。只需重新运行此单元格即可。如果您在内存密集型数据集上做了很多工作,这将非常有用


-2
投票

您应该在重新启动并通过运行所有单元格重新打开笔记本电脑后开始工作流程。在顶部菜单中,执行其他操作之前,请先选择“单元格->全部运行”

© www.soinside.com 2019 - 2024. All rights reserved.