47

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

common_func.ipnbdef func_a()

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

4

5 回答 5

28

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

ipython notebook --script

然后,每当您保存笔记本“common_func.ipnb”时,它也会创建一个名为“common_func.py”的文件。您可以通过使用从中导入函数

from common_func import func_a

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

reload()
于 2013-10-24T12:50:11.793 回答
28

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

用法:

import nbimporter
import notebookName as name
name.functionName()

如果你更新notebookName .ipynb 然后重新加载:

reload(name)

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

from importlib import reload
reload(name)
于 2016-09-15T08:31:24.250 回答
13

在 IPython 邮件列表中,这是最近讨论的,请参见此处。最后(在这里),找到了一个示例笔记本,它显示了一种从其他笔记本导入代码的方法。这个笔记本可以在examples/notebooks目录中找到,看起来像这样。您“只需”定义NotebookLoaderNotebookFinder类,如笔记本中所示。我已经尝试过使用 IPython 1.1.0 并且效果很好!

于 2013-10-26T21:08:39.200 回答
13

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

pip install ipynb

接着:

import ipynb.fs.defs.my_other_notebook as other
于 2016-12-20T14:15:39.827 回答
1

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

于 2019-09-24T18:11:26.337 回答