重用来自不同IPython笔记本的代码

use*_*289 45 python ipython ipython-notebook

我正在使用IPython,并希望从另一个笔记本中运行功能(不需要在不同的笔记本之间剪切和粘贴).这可能并且相当容易吗?

Mat*_*att 35

启动笔记本服务器:

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

将notebooks(.ipynb)保存为Python脚本(.py),您将能够导入它们.

或者看看:http://nbviewer.ipython.org/5491090/包含2个笔记本,一个执行另一个.

  • `--script`参数在3.0中被删除:http://ipython.org/ipython-doc/dev/whatsnew/version3.html#backwards-incompatible-changes.替换是`ipython nbconvert - 到python notebook`(或者这个问题中提到的其他方法之一). (5认同)
  • 如果您喜欢的笔记本名称不是有效的python模块名称(例如:包含空格和点等内容),您将无法"导入"它们.但是你可以使用'%run`魔法. (2认同)
  • 你*可以*实际从任何文件名导入,它只需要几个键击.参见`imp`模块. (2认同)
  • 您链接到的笔记本提供了问题的最佳答案:`analysis.ipynb`定义了一个函数`execute_notebook`,它将运行另一个笔记本中的所有代码.(不确定这会发生什么命名空间.) (2认同)

Eri*_*sel 22

在IPython 2.0中,您可以简单%run 'my_shared_code.ipynb'地在笔记本之间共享代码.例如,参见http://nbviewer.ipython.org/gist/edrex/9044756.


dre*_*cko 14

Ipythons %runmagic允许您在笔记本中执行python文件和ipython脚本.我有时会使用该-i选项,因此它在notebooks命名空间中运行.执行包含%run?在其中的单元格以获取更多信息.

您可以使用ipython --script保存的笔记本电脑也为.py在每次保存或取消对该行的文件c.NotebookManager.save_script=Trueipython_notebook_config.py达到相同的效果文件(使用ipython profile create用于设置了- Ubuntu的文件都在config ~/.config/ipython/).

编辑:以下是真的,但不必要 - 你可以直接%run使用.ipynb文件.谢谢Eric.

如果您在要导入的笔记本中使用ipython magics,我发现您可以将.py文件重命名为.ipy(ipython脚本),但我必须删除第一行(包含文件编码声明)才能使用.可能有更好的方法!这种方法也可能会混淆细胞魔法(他们都会立即应用).

  • 你可以'%run'my_notebook.ipynb'`,这会让你的答案变得更简单. (5认同)

Mik*_*ler 3

您可以使用 qtconsole 连接到同一内核。只需在启动时提供:

ipython qtconsole --existing kernel-0300435c-3d07-4bb6-abda-8952e663ddb7.json
Run Code Online (Sandbox Code Playgroud)

启动笔记本后查看长字符串的输出。