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

Shu*_*uan 43 ipython jupyter-notebook

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

common_func.ipnb 具有 def func_a()

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

谢谢!

小智 28

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

ipython notebook --script
Run Code Online (Sandbox Code Playgroud)

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

from common_func import func_a
Run Code Online (Sandbox Code Playgroud)

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

reload()
Run Code Online (Sandbox Code Playgroud)

  • 从ipython 3.0开始,不推荐使用`--script`标志.`jupyter nbconvert --to script [notebook]`似乎是替代品(在4.1.0中). (6认同)
  • 无论如何有人在想,它是可用的 (4认同)

yel*_*cin 23

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

用法:

import nbimporter
import notebookName as name
name.functionName()
Run Code Online (Sandbox Code Playgroud)

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

reload(name)
Run Code Online (Sandbox Code Playgroud)

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

from importlib import reload
reload(name)
Run Code Online (Sandbox Code Playgroud)

  • reload()从何而来? (2认同)

Jak*_*kob 12

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

  • 或者[这里](http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/IPython%20Kernel/Importing%20Notebooks.ipynb) (3认同)
  • 请点击该代码:https://gist.github.com/alexoliveira/ae5c896d3b065ecccdb170f5609673a4.要使用它,请将"notebook_importer.py"放入iPython根目录中.使用`from notebook_importer import*`导入它.最后导入你的笔记本!(例如:带有`import my_notebook`的my_notebook.ipynb).现在可以访问该笔记本文件中的所有函数/类. (3认同)
  • 具体来说,链接目前是[这里](http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/Notebook/Importing%20Notebooks.ipynb). (2认同)

Dan*_*bos 11

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

pip install ipynb
Run Code Online (Sandbox Code Playgroud)

然后:

import ipynb.fs.defs.my_other_notebook as other
Run Code Online (Sandbox Code Playgroud)