Kaggle Notebook导入自定义Python文件 解决模块属性报错问题
Kaggle Notebook导入自定义Python文件及属性报错解决方案
报错核心原因
你遇到的AttributeError: module 'helper' has no attribute 'get_genre_ratings',本质是Python加载的helper模块不是你写的包含目标函数的文件,通常由路径配置错误、模块缓存、文件内容缺失三类问题导致。
正确操作流程
- 上传自定义文件
点击Notebook右侧的+ Add data按钮,上传本地的helper.py文件,可以单独上传也可以打包成文件夹上传。上传完成后所有文件都会挂载到/kaggle/input/目录下。 - 确认文件的实际路径
不要直接写模糊的相对路径,先运行以下代码扫描输入目录,定位helper.py的准确位置:
从输出的路径里找到import os for dirname, _, filenames in os.walk('/kaggle/input'): for filename in filenames: print(os.path.join(dirname, filename))helper.py的完整路径,比如输出为/kaggle/input/myscripts/helper.py,那么你需要加入系统路径的是这个文件的父文件夹路径,也就是/kaggle/input/myscripts,不要把文件本身的路径加到系统路径里。 - 清理缓存后重新导入
Kaggle运行时会缓存已经导入过的模块,如果你之前导入过同名的错误模块,哪怕改了路径也会加载旧缓存,需要先清缓存再导入,参考代码:import sys import importlib # 替换成你上一步查到的helper.py所在父文件夹的绝对路径 HELPER_FOLDER = "/kaggle/input/myscripts" if HELPER_FOLDER not in sys.path: sys.path.append(HELPER_FOLDER) # 清除已有缓存 if "helper" in sys.modules: del sys.modules["helper"] import helper # 强制重新加载最新模块 importlib.reload(helper)
剩余报错排查
如果按上述步骤操作后还是报错,逐一检查以下项:
- 运行
!cat /kaggle/input/你的实际路径/helper.py,直接查看上传到Kaggle的文件内容,确认get_genre_ratings函数是文件顶层定义的,没有拼写错误、缩进错误(比如函数写在其他函数内部、条件判断块内部,不会作为模块属性暴露)。 - 确认本地文件没有命名错误,比如Windows系统默认隐藏已知后缀名,很容易把文件存成
helper.py.txt这类带隐藏后缀的名字,实际并不是Python文件。 - 如果你需要修改
helper.py的内容,不要直接在input目录操作(该目录为只读),可以先把文件复制到可写的工作目录/kaggle/working再导入:import shutil shutil.copy("/kaggle/input/myscripts/helper.py", "/kaggle/working/helper.py") # 后续把/kaggle/working加入路径导入即可
提示:导入完成后可以运行
print(dir(helper))查看模块下所有可用的属性和方法,能快速确认目标函数是否被正确加载。
内容的提问来源于stack exchange,提问作者Muhammad Aslam
相关产品推荐
相关产品推荐

