如何从另一个ipython-notebook导入?

时间:2013-10-24 11:25:51

标签: jupyter-notebook ipython

我想从另一个ipython-notebook导入一个func。说,

common_func.ipnbdef func_a()

当我创建一个新笔记本时,如何访问来自另一个笔记本但位于同一个文件夹和相同ipython实例的func_a

5 个答案:

答案 0 :(得分:28)

当你启动ipython时,使用--script标志:例如

ipython notebook --script

然后,每当您保存笔记本“common_func.ipnb”时,它还会创建一个名为“common_func.py”的文件。您可以使用

从中导入函数
from common_func import func_a

如果更改common_func笔记本,则可能需要使用

reload()

答案 1 :(得分:23)

现在有一个专门的功能来实现这个名为nbimporter - 通过pip安装。

用法:

import nbimporter
import notebookName as name
name.functionName()

如果您更新 notebookName .ipynb,请按以下方式重新加载:

reload(name)

或者这对于Python 3(重新加载默认不包括):

from importlib import reload
reload(name)

答案 2 :(得分:12)

在最近讨论过的IPython邮件列表中,请参阅here。最后(here),找到了一个示例笔记本,它显示了从其他笔记本导入代码的方法。这个笔记本可以在examples/notebooks目录中找到,看起来像this。您只需定义 NotebookLoader NotebookFinder 类,如笔记本中所示。我尝试过使用IPython 1.1.0,它运行正常!

答案 3 :(得分:10)

另一个选项是ipynb。与nbimporter相比,一个很好的好处是它可以只导入定义,而不执行其余的代码。在这一点上它是相当新的(0.5)。

pip install ipynb

然后:

import ipynb.fs.defs.my_other_notebook as other

答案 4 :(得分:0)

importnb是一个选项。它具有一些不错的功能,例如模糊匹配,可以帮助您找到笔记本,并帮助导入通常会出现名称问题的笔记本,