导入自定义Sum模块调用sum方法出现AttributeError,如何排查代码问题?
Python AttributeError报错问题解答
报错具体含义
你遇到的报错:
AttributeError: module 'Sum' has no attribute 'sum'
含义是Python解释器成功加载了名为Sum的模块,但在该模块的可调用属性、方法列表中,没有找到你要调用的sum函数,因此抛出属性不存在的异常。
代码存在的问题排查
你写的Sum.py和main.py的核心逻辑本身没有语法错误,出现该报错基本是模块加载匹配失败导致的,常见原因如下:
- 文件路径不匹配:Sum.py和main.py没有存放在同一个目录下,或者你运行main.py时的工作目录不是两个文件所在的目录,解释器加载到了其他同名的Sum模块
- 文件名大小写/后缀错误:
- 你的文件实际命名为
sum.py(全小写),Windows、macOS系统默认不区分文件名大小写,会导致模块加载不匹配 - Windows默认隐藏已知文件后缀,你的Sum.py实际被命名为
Sum.py.txt,无法被识别为Python模块
- 你的文件实际命名为
- 模块缓存冲突:你之前运行过同名的Sum模块,Python自动生成的
__pycache__缓存目录中保存了旧的模块编译结果,不会加载你最新修改的Sum.py内容
修复验证方法
你可以在main.py中加入模块路径打印代码,确认加载的模块是否为你编写的版本:
import Sum # 打印模块对应的实际文件路径 print(Sum.__file__) Sum.sum(1,2)
如果打印的路径不是你编写的Sum.py的绝对路径,按上述排查点修改即可,也可以直接删除运行目录下的__pycache__文件夹后重新运行,即可正常调用函数。
内容的提问来源于stack exchange,提问作者THIRUMALA CHANDRA
相关产品推荐
相关产品推荐

