当我在 python 中编写自己的模块时,导入模块的正确方法是什么?

What is the correct way to import modules when I'm writing my own module in python?

我搜索过类似的问题,但我发现的内容对我不起作用。
我正在 jupyter notebook 中写我的分析报告(比方说 main.ipynb)。我想导入一个外部 functions.py 文件,其中包含一些我用来绘制一些结果的函数。准确地说,我的工作目录具有以下结构:
-main.ipynb
-工具
----functions.py
---- 其他文件...

functions.py 文件是这样的:

import matplotlib.pyplot as plt


def myPlot():
    plt.figure()
    plt.plot([0,1],[0,1])
    plt.show()
    ....

笔记本的第一个单元格是这样的:

import matplotlib.pyplot as plt
from utils.functions import *

myPlot()

当我 运行 笔记本时,我得到这个错误: NameError: name 'plt' is not defined,尽管我在两个文件中都定义了 plt(即使我认为我真的不应该在 main.ipynb 中需要它)。

S0,在外部文件中导入包(在本例中为matplotlib.pyplot)的正确方法是什么?我做错了什么?

我发现了我的代码中的缺陷,我认为它值得分享,所以我来了。
也许对于使用 jupyter notebook 的初学者(比如我)来说,这可能很难检测到:一旦你 运行 带有导入语句的单元格,编辑你的文件 functions.py 并重新-运行 那个单元格。内核已经导入了一个具有完全相同名称的文件,因此即使您进行了更改,它也不会注意到差异。

我找到的解决方案(我认为是唯一的)是每次更改 functions.py 文件时重新启动内核。