Jupyter Notebook: 导入.ipynb文件并在其他.ipynb文件中调用其方法出现错误

5

我对Jupyter Notebook还比较新。我已经玩弄了一段时间。但这是我第一次尝试将另一个笔记本导入到我的主要类中。

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

我正在尝试在Jupyter Notebooks中复制我在Python项目中所做的内容。它需要将其他.ipynb文件(从原始.py文件翻译而来)导入其中,以使用所需的相关方法。

为此,我按照Jupyter Nbviewer 步骤链接上给出的指示进行操作,该链接是我通过以下stack 问题进行初步搜索得到的。它给了我一些想法,但在一个阶段后就没有帮助了。

我将向您介绍我所采取的步骤和我尝试的示例程序。

  1. Created a small .ipynb file abc.ipynb as follows

    def prt_n(str):
        print(str)
    if __name__ == '__main__':
        prt_n("in abc")
    
  2. Created an .ipynb file to import Jupyter Notebook from the Jupyter link given above. Say, importer.ipynb.

  3. Run importer.ipynb

  4. import abc

  5. str="Hello Me"

  6. Test step abc.__name__ results in abc as output.

  7. abc.prt_n(str) throws following error

This is a line of asterisks used to separate or divide sections of text.
AttributeError                            Traceback (most recent call last)
<ipython-input-9-2fb88a43c9e5> in <module>()

----> 1 abc.prt_n(str)
AttributeError: 'module' object has no attribute 'prt_n'

我希望答案是Hello Me

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

其中一个示例可以是名为efg.ipynb的文件,如下所示:

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

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

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

欢迎任何形式的帮助!

2个回答

7

使用jupyter note book中ipynb文件的简单方法如下:

1)安装import-ipynb

pip install import-ipynb

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

import import_ipynb
from test import print_name

print_name("your name")

5

**

链接到Drive上的示例文件。

**

好的,经过一番努力和在互联网上寻找,我终于找到了适合我的样本案例的解决方案。

首先,这是对我最有帮助的问题的stackoverflow问答。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`

我得到了以下输出:

从test/efg.ipynb导入Jupyter笔记本 你好Note

我希望这对那些遇到类似问题的人有所帮助。

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

谢谢 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接