背景
今日我的Python心路历程是 初探python调试总结之互相import引发的AttributeError问题)
分析
最近在编写Python脚本过程中遇到一个问题比较奇怪:Python脚本完全正常没问题,但执行总报错"AttributeError: 'module' object has no attribute 'xxx'
"。异常如图所示:
仔细看了下,存在奇诡的同名.pyc文件,删除一个后依然有问题,后来网上找了资料确定是.pyc文件导致的,故此搜索发现有多个.pyc文件,删除所有后问题得到解决。
回头想想,只要互相import就会出来同名.pyc文件,调试时值得关注这种情况。但更让人琢磨不透的是,通过删除同名.pyc文件并非根本之道,因为后面又出现了,而且这种方法不生效了。
方案
通过查阅一些资料,发现互相import需要有些注意实现,其中之一就是要将调用的代码放在if __name__ == '__main__':
中,代码如下所示:
if __name__ == '__main__':
# 在状态栏目添加系统时钟功能
function.time_clock()
这样就从根本上解决了这个问题,试了多次编译都没有错误。