繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM