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

时间:2017-06-02 19:23:31

标签: python module anaconda jupyter user-defined

我是Jupyter Notebook的新手。我玩了一段时间。但这是我第一次尝试将另一台笔记本导入我的主要课程。

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

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

为此,我按照Jupyter Nbviewer Steps Link上给出的指示进行了操作,我在下面的堆栈Question进行了初步搜索。它给了我一些想法,但在一个阶段后没有帮助我。

我将引导您完成我所采取的步骤以及我尝试过的示例程序。

  1. 创建一个小的.ipynb文件abc.ipynb,如下所示

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

  3. 运行importer.ipynb

  4. import abc

  5. str="Hello Me"

  6. 测试步骤abc.__name__会产生abc作为输出。

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

  8. * ---------------------------------------------- -----------------------------

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

    ----&GT; 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路径值。

    欢迎任何形式的帮助!

2 个答案:

答案 0 :(得分:5)

**

  

链接到Drive

上的示例文件

**

确定。因此,经过一番努力并在互联网上四处寻找,最后找到了适用于我的样本案例的解决方案。

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

所以,我做的是,我通过名称模块创建了一个文件夹,并将所有.ipynb文件放在那里。另外,我使用__init__.py命令在该模块中创建了一个touch __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

作为我想要的输出。

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

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

谢谢:)

答案 1 :(得分:3)

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

1)安装import-ipynb

pip install import-ipynb

2)将import_ipynb导入jupyter笔记本中。然后在导入.py文件时导入ipynb文件

import import_ipynb
from test import print_name

print_name("your name")