我正在为我的硕士论文写一本Jupyter笔记本,我想保持它干净。我使用很多函数为数据组分配类别。 因此,我决定将所有这些函数放在functions.py模块中,并在笔记本开始时导入该模块。我的笔记本具有以下导入内容:
import sys
sys.path.append('../src/') # ugly hack to be able to import the functions module
import re
import numpy as np
import pandas as pd
import seaborn as sns
import functions as fn
我的一个函数使用“re”模块将字符串与正则表达式匹配。当我调用上述函数时,我得到了NameError: ("name 're' is not defined", 'occurred at index 0')
,所以我想我必须在functions.py文件的开头import re
。这没有改变任何事情。所以我甚至尝试将import re
放在函数体中,但它也不起作用
我完全不知道为什么re不起作用,尽管我试着到处导入它
注意:当我在笔记本上定义和使用函数时,我的函数工作正常,因此我确信这不是我函数中的错误
在笔记本中,您可以使用importlib库并调用
importlib.reload(module)
,而不是重新启动内核解决了我自己的问题,答案非常简单:Jupyter不考虑对导入模块的任何编辑,即使您重新导入它。如果您对模块进行任何更改,您必须关闭内核并重新启动它,再次导入,编辑将正常工作
在我的特殊情况下,我已经在functions.py中添加了
import re
,但是Jupyter在我重新启动内核之前没有考虑到这一点相关问题 更多 >
编程相关推荐