Jupyter Notebook:导入 .ipynb 文件并在其他 .ipynb 文件中访问它的方法出错

Jupyter Notebook: Import .ipynb file and access it's method in other .ipynb file giving error

我是 Jupyter Notebook 的新手。我已经玩了一段时间了。但这是我第一次尝试将另一个笔记本导入我的主 class.

作为参考,我使用的是 Anaconda 4.3.1 和 Python v2.7。

我正在尝试将我在 python 项目中所做的复制到 jupyter 笔记本中。它需要将其他.ipynb文件(从原始.py文件翻译而来)导入其中才能根据需要使用相关方法。

为此,我遵循了 Jupyter Nbviewer Steps Link which I found through my preliminary search on the following stack Question 上给出的说明。它给了我一些想法,但在一个阶段后没有帮助我。

我将向您介绍我执行的步骤和我尝试的示例程序。

  1. 创建了一个小的.ipynb文件abc.ipynb如下

    def prt_n(str):
        print(str)
    if __name__ == '__main__':
        prt_n("in abc")
    
  2. 创建了一个 .ipynb 文件以从上面给出的 Jupyter link 导入 Jupyter Notebook。比如说,importer.ipynb.

  3. 运行 importer.ipynb

  4. import abc

  5. str="Hello Me"

  6. 测试步骤 abc.__name__ 结果为 abc 作为输出。

  7. abc.prt_n(str) 抛出以下错误

*---------------------------------------- ------------------------------

AttributeError                            Traceback (most recent call last)
<ipython-input-9-2fb88a43c9e5> in <module>()

----> 1 abc.prt_n(str) AttributeError: 'module' 对象没有属性 'prt_n'*

我希望答案是 Hello Me

稍后,我想实际创建一个 myMain.ipynb 文件,其中我想包含 2-3 个这样的笔记本并使用所需参数调用它们的方法。

一个这样的例子可以是一个文件 efg.ipynb 如下:

import abc a="Hello Notebook" abc.prt_n(a)

我也想确定是否有其他方法可以做到这一点?

注意:我已经检查了sys.executable和sys.path。两者具有相同的 python 路径值。

欢迎任何形式的帮助!

**

Link to sample files on Drive

**

好的。因此,经过一番努力并在 Internet 上四处寻找,终于找到了适用于我的示例案例的解决方案。

首先,这是对我帮助最大的Whosebug问题。 Mohideen 和 Tyhela 的回答是实际的解决方案,而不是得票最多的解决方案。

所以,我所做的是,我创建了一个名为 module 的文件夹,并将我所有的 .ipynb 文件放在那里。另外,我使用 touch __init__.py 命令在该模块中创建了一个 __init__.py 文件,以便导入可以将其注册为有效模块。那些人已经给出了详细的解释,这似乎是合法的。

然后从我的工作目录 运行 执行以下命令:

str = "Hello Me"
import test.abc as tabc
tabc.prt_n(str)

在输出中给了我 Hello Me

还有,

`import test.efg as tefg`

我得到了

importing Jupyter notebook from test/efg.ipynb Hello Note

作为我想要的输出。

希望对遇到类似问题的其他人有所帮助。

如果您有更好的方法,请与我分享,我将不胜感激。

谢谢:)

在jupyter notebook中使用ipynb文件的简单方法如下:

1) 安装import-ipynb

pip install import-ipynb

2) 在 jupyter notebook 中导入 import_ipynb。然后像导入.py文件一样导入ipynb文件

import import_ipynb
from test import print_name

print_name("your name")