ipynb导入另一个ipynb文件

And*_*ris 55 python import workflow ipython

交互式Python(ipython)简直太神奇了,尤其是当你在飞行中将事物拼凑在一起时...并且这样做很容易回归.

然而,似乎有趣的是具有多个ipython笔记本(ipynb文件)的用例.显然,似乎笔记本不应该与其他笔记本有关系,这是有道理的,除了我想要导入其他ipynb文件.

我看到的唯一解决方法是将我的*.ipynb文件转换为*.py文件,然后将其导入我的笔记本中.让一个文件保存在项目中的所有内容有点奇怪,特别是如果我想真正推动代码重用(这不是python的核心原则吗?).

我错过了什么吗?这不是ipython笔记本支持的用例吗?我可以使用另一种解决方案将ipynb文件导入另一个笔记本吗?我想继续使用ipynb,但它现在正在弄乱我的工作流程:(

joh*_*odo 87

在较新的Jupyter中它非常简单:

%run MyOtherNotebook.ipynb
Run Code Online (Sandbox Code Playgroud)

  • %run MyOtherNotebook.ipynb为我完成了这项工作.(没有'') (5认同)
  • %run'MyOtherNotebook.ipynb'错误:root:找不到文件`u'MyOtherNotebook.ipynb.py'. (5认同)
  • 如果有人遇到这种情况,您也可以使用完整路径,如 %run "/path/to/my/file/notebook.ipynb" (4认同)
  • 小心,这种方法将完全运行子笔记本.您可以在globals()中添加一个检查`__name__ =='__ main__'和'__file__'来验证您是否在子笔记本中.(来自https://blog.sicara.com/present-data-science-results-jupyter-notebook-import-into-another-108433bc8505) (3认同)

Mal*_*lgo 28

!pip install ipynb

然后将另一个笔记本导入为

from ipynb.fs.full.<notebook_name> import *

或者

from ipynb.fs.full.<notebook_name> import <function_name>

确保所有笔记本都在同一目录中。

编辑 1:您可以在此处查看官方文档 - https://ipynb.readthedocs.io/en/stable/

另外,如果你想从一个笔记本仅导入类和函数定义(而不是顶层语句),你可以使用ipynb.fs.defs的替代ipynb.fs.full。完整的大写变量赋值也将被评估。

  • 请注意,在描述的两种情况下,导入的笔记本都会被完整执行。`ipynb` 包还支持仅部分执行定义。它是 IPyhton 的官方软件包,所以我相信这应该是公认的答案。 (5认同)
  • 如果我的文件名中有空格怎么办? (4认同)
  • 这可以导入文件夹内的笔记本吗?例如``MyFolder/book.ipynb`` (3认同)
  • 建议您的文件名中不要保留任何空格 (2认同)

axi*_*xil 19

如果A.ipynb要从B.ipynb写入导入

import import_ipynb
import A
Run Code Online (Sandbox Code Playgroud)

B.ipynb.

import_ipynb我创建的模块是通过pip安装的:

pip install import_ipynb
Run Code Online (Sandbox Code Playgroud)

它只是一个文件,它严格遵守jupyter网站上的官方howto.

PS它还支持之类的东西from A import foo,from A import *

  • `import nbimporter` 和 `import import_ipynb` 之间有什么区别吗? (3认同)
  • 这在我的 Jupyter 和 Python 3 中根本不起作用 (3认同)

out*_*rld 17

从命令提示符安装 ipynb

pip install import-ipynb
Run Code Online (Sandbox Code Playgroud)

导入您的笔记本文件

import import_ipynb
Run Code Online (Sandbox Code Playgroud)

现在使用常规导入命令导入您的文件

import MyOtherNotebook
Run Code Online (Sandbox Code Playgroud)


小智 7

%run YourNotebookfile.ipynb 工作正常;

如果您想导入特定模块,只需在 ipynb 之后添加导入命令即可,即 YourNotebookfile.ipynb 具有 def Add()

那么你就可以使用它

%run YourNotebookfile.ipynb import Add
Run Code Online (Sandbox Code Playgroud)


小智 6

上面提到的意见非常有用,但实施起来有点困难。您可以尝试以下步骤,我也尝试过并且有效:

  1. 从笔记本中以 PY 文件格式下载该文件(您可以在“文件”选项卡中找到该选项)。
  2. 现在将下载的文件复制到 Jupyter Notebook 的工作目录中
  3. 您现在可以使用它了。只需将 .PY 文件导入到 ipynb 文件中


Fra*_*ale 5

import nbimporter然后你可以使用import notebookName