Python 虽然re在模块和主代码中导入,但未定义名称re

Python 虽然re在模块和主代码中导入,但未定义名称re,python,jupyter,Python,Jupyter,我正在为我的硕士论文写一本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

我正在为我的硕士论文写一本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”模块将字符串与正则表达式匹配。当我调用上述函数时,我得到了
namererror:(“name're'未定义”,“在索引0处发生”)
因此我想我必须在functions.py文件的开头导入re。这没有改变任何事情。因此,我甚至尝试将
import re
放在函数体中,但它也不起作用

我完全不知道为什么re不起作用,尽管我试着到处导入它


注意:当我在笔记本上定义和使用我的函数时,它们工作正常,因此我确信这不是我函数中的错误。

解决了我自己的问题,答案非常简单:Jupyter不考虑对导入模块的任何编辑,即使您重新导入它。如果您对模块进行任何更改,您必须关闭内核并重新启动它,再次导入,编辑将正常工作


在我的特殊情况下,我在functions.py中添加了
import re
,但是Jupyter在重新启动内核之前没有考虑到这一点

在笔记本中,您可以使用importlib库并调用
importlib.reload(模块)
没有重新启动内核

您是否执行了该单元?是的,当然我执行了:)编辑:我也无法通过在类似的目录结构中使用.py文件来重现此问题,因此这似乎是Jupyter的问题。这与常规Python会话相同。