我想从另一个ipython-notebook导入一个func。说,
common_func.ipnb
有def func_a()
当我创建一个新笔记本时,如何访问来自另一个笔记本但位于同一个文件夹和相同ipython实例的func_a
?
答案 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是一个选项。它具有一些不错的功能,例如模糊匹配,可以帮助您找到笔记本,并帮助导入通常会出现名称问题的笔记本,