Jupyter跨文件夹调用py文件自定义函数出现AttributeError怎么解决
可行解决方法
1. 优先解决模块缓存问题
Jupyter 内核导入外部.py文件后默认会缓存模块内容,后续你修改DEA_functions.py的代码后内核不会自动同步更新,就会出现函数已定义但调用报错的情况。
你可以在导入模块的代码前先添加两行魔法命令,强制内核重载修改过的模块,同时调整路径插入优先级避免同名模块干扰:
%load_ext autoreload %autoreload 2 import sys sys.path.insert(0, "../") import Src.DEA_functions as DEA
修改后重启Jupyter内核,重新运行所有单元格测试即可。
2. 检查文件命名与包配置
- 确认文件名大小写完全匹配:你目录里的导入文件是
importing_modules.py,但你写的导入代码是from Src.Importing_modules import *,首字母大写不一致,Windows系统不区分大小写,但Linux/Mac系统会报错。 - 确认
Src文件夹下的初始化文件命名为__init__.py(前后各两个下划线),如果少了下划线会导致Src无法被识别为Python包。
3. 校验模块导入路径
如果上述方法无效,可以运行代码确认你导入的DEA_functions模块实际路径,避免误导入了其他位置的同名文件:
import Src.DEA_functions as DEA print(DEA.__file__)
如果输出的路径不是你项目里的Data_Analytics/Src/DEA_functions.py,可以把相对路径替换为项目根目录的绝对路径:
import sys # 替换为你本地Data_Analytics文件夹的实际绝对路径 sys.path.insert(0, "C:/xxx/xxx/Data_Analytics")
4. 检查函数定义逻辑
确认DEA_functions.py中getIndexes函数的缩进,保证它是模块的顶级对象,没有被嵌套在其他函数、类、条件判断语句块中,嵌套定义的函数无法通过模块直接调用。
内容的提问来源于stack exchange,提问作者Enrique
相关产品推荐
相关产品推荐

