2017-06-02 44 views
2

我是相当新的Jupyter笔记本方法。我已经玩了一段时间了。但这是我第一次尝试将另一台笔记本导入我的主课程。Jupyter笔记本:进口.ipynb文件和访问它在其他.ipynb文件给错误

仅供参考,我使用蟒蛇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笔记本。说,importer.ipynb。

  3. 运行importer.ipynb

  4. import abc

  5. str="Hello Me"

  6. 测试步骤abc.__name__导致abc作为输出。

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

--------------------------------- ------------------------------------------ AttributeError Traceback(最近呼叫最后在) () ----> 1个abc.prt_n(STR) AttributeError的: '模块' 对象没有属性 'prt_n'

我希望答案是Hello Me

后来,我想真正创建一个myMain.ipynb文件,并在这我想包括2-3个这样的笔记本电脑,并调用它们的方法与所需的参数。

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

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

我也想确认是否有任何其他方式做到这一点?

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

欢迎任何形式的帮助!

回答

3

**

Link to sample files on Drive

**

确定。所以,经过一番斗争并在互联网上环顾四周,终于找到了适用于我的示例案例的解决方案。

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

所以,我所做的就是,我的名字模块做了一个文件夹,并把我的所有.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

正如我所期望的输出。

我希望这会有所帮助别人谁在类似的问题,土地起来。

如果你有更好的方法,然后,我将不胜感激,如果你可以跟我分享。

谢谢:)