导入无类定义的Python自定义模块调用函数时报AttributeError如何解决
问题原因及解决方法
- 导入了非目标同名模块
Python的模块搜索路径遵循优先级排序,若存在其他同名的simple_math.py文件、已安装同名第三方库,都会优先加载非你编写的目标文件。
验证方法:在testing_result.py中加入以下代码,打印模块加载路径确认是否匹配你编写的文件位置:
解决方法:删除或重命名冲突的同名文件,卸载冲突的第三方库即可。import simple_math print(simple_math.__file__) - 旧缓存未更新
若你之前运行过旧版本的simple_math.py,Python生成的__pycache__缓存文件可能没有同步更新,导致加载的是没有addition函数的旧版本代码。
解决方法:删除项目目录下的__pycache__文件夹后重新运行代码。 - 运行时工作目录不匹配
执行testing_result.py时的当前工作目录如果不是两个文件同属的文件夹,Python无法检索到你编写的simple_math.py,会触发导入错误。
解决方法:先cd进入两个文件所在的文件夹,再执行testing_result.py;或者在导入模块前手动添加目标路径到Python搜索路径:import sys # 引号内替换为simple_math.py所在文件夹的绝对路径 sys.path.append("/path/to/your/folder") - 文件名后缀错误
Windows系统默认隐藏已知文件后缀,可能你保存文件时实际命名为simple_math.py.txt,而非有效的Python模块文件。
解决方法:在资源管理器中开启「文件扩展名」显示,确认文件名后缀为.py即可。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

