[英]importing python utility functions into jupyter notebook
我一直在将 Jupyter notebook 用于我的 Python 应用程序。 我经常使用几个实用函数。 今天,我的解决方案是将所有这些功能复制到新的 python notebook 中并执行我的新应用程序。 我想编写一个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()
假设utility.py
的绝对路径是/home/anhata/utils/utility.py
:
import sys
sys.path.append('/home/anhata/utils')
import utility
utility.f1()
不过要小心, utility
是潜在重复的一个非常常见的词。
很有可能在 python 包库中可能有一个名为utility
的模块。 在这种情况下,您的程序可能会将您的utility.py
程序utility.py
与该文件混淆。 我可以建议您将其重命名为特定的名称,例如anhata_utils.py
。
关于 Ali Yilmaz 出色反应的注释。 实用程序必须使用 .py 扩展名保存,而不是 jupyter notebook 扩展名
我最喜欢的处理方法是在每个笔记本的顶部粘贴相同的代码块,这段代码足够聪明,可以确定它的位置以及是否需要将其添加到路径中。
import sys, os
if os.path.abspath("..") not in sys.path:
sys.path.insert(0, os.path.abspath(".."))
然后我就可以打造出我的一个项目, notebooks/
含我的笔记本电脑,一个子目录data/
包含任何必要的数据子目录和util/
含目录__init__.py
和任何额外的代码,我想用。 假设我在util/utility.py
写了my_function
,我会按如下方式使用它:
from util.utility import my_function
y = my_function(x)
因为我将".."
的完整路径放在我的sys.path
第一个行中,所以我可以从那里导入。 请注意名称冲突。 例如,命名您的子目录numpy
,然后尝试导入公共numpy
库会导致首先找到您自己的numpy
版本,并且您将永远无法访问公共版本。 这些问题可能会让调试很恼火。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.