将python实用程序函数导入jupyter notebook

时间:2018-05-18 17:42:39

标签: python import jupyter-notebook

我一直在为我的python应用程序使用Jupyter笔记本。我经常使用几种实用功能。今天,我的解决方案是将所有这些功能复制到新的python笔记本中并执行我的新应用程序。我想编写一个python文件(比如utility.py)并在该文件中编写所有例程函数。但是,我不知道如何调用或将utility.py导入Jupyter笔记本。

utility.py
def f1(): do_something
def f2: do_something2
def f3: do_somthing3

在.ipynb文件中

import utility.py
utility.f1()
utility.f2()

3 个答案:

答案 0 :(得分:1)

假设utility.py的绝对路径为/home/anhata/utils/utility.py

import sys
sys.path.append('/home/anhata/utils')
import utility

utility.f1()
但是要小心,utility是潜在复制品的常用词。

很可能在python包库中可能有一个名为utility的模块。在这种情况下,您的程序可能会将您的utility.py与该文件混淆。我建议您将其重命名为特定内容,例如anhata_utils.py

答案 1 :(得分:0)

关于阿里·伊尔马兹(Ali Yilmaz)出色反应的一则说明。实用程序必须使用.py扩展名而不是jupyter笔记本扩展名保存

答案 2 :(得分:0)

我最喜欢的处理方式是在每个笔记本的顶部粘贴相同的代码块,这段代码足够聪明,可以确定它的位置以及是否需要将其添加到路径中。

import sys, os
if os.path.abspath("..") not in sys.path:
    sys.path.insert(0, os.path.abspath(".."))

然后我可以使用包含我的笔记本的 notebooks/ 子目录、包含任何必要数据的 data/ 子目录以及包含 util/ 和任何我想使用的额外代码。假设我在 __init__.py 中写了 my_function,我会这样使用它:

util/utility.py

因为我将 from util.utility import my_function y = my_function(x) 的完整路径放在 ".." 的第一行,所以我可以从那里导入。请注意名称冲突。例如,将您的子目录命名为 sys.path,然后尝试导入公共 numpy 库会导致首先找到您自己的 numpy 版本,而您将永远无法访问公共版本.这些问题可能会让调试很恼火。