我也找过类似的问题,但是我找到的并不适合我。我是在jupyter笔记本中写分析报告的(比方说 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
文件。