Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
2016-05-04 15:27
555 查看
最近在编写Python脚本过程中遇到一个问题比较奇怪:Python脚本完全正常没问题,但执行总报错"AttributeError: 'module' object has no attribute 'xxx'"。这其实是.pyc文件存在问题。
问题定位:
查看import库的源文件,发现源文件存在且没有错误,同时存在源文件的.pyc文件
问题解决方法:
命名py脚本时,不要与python预留字,模块名等相同。
删除该库的.pyc文件(因为py脚本每次运行时均会生成.pyc文件;在已经生成.pyc文件的情况下,若代码不更新,运行时依旧会走pyc,所以要删除.pyc文件),重新运行代码;或者找一个可以运行代码的环境,拷贝替换当前机器的.pyc文件即可。
pyc文件介绍
pyc文件,是python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机器码运行(这也是为什么pyc文件可以跨平台部署,类似于java的跨平台,java中JVM运行的字节码文件)。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。
问题定位:
查看import库的源文件,发现源文件存在且没有错误,同时存在源文件的.pyc文件
问题解决方法:
命名py脚本时,不要与python预留字,模块名等相同。
删除该库的.pyc文件(因为py脚本每次运行时均会生成.pyc文件;在已经生成.pyc文件的情况下,若代码不更新,运行时依旧会走pyc,所以要删除.pyc文件),重新运行代码;或者找一个可以运行代码的环境,拷贝替换当前机器的.pyc文件即可。
pyc文件介绍
pyc文件,是python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机器码运行(这也是为什么pyc文件可以跨平台部署,类似于java的跨平台,java中JVM运行的字节码文件)。下次调用直接调用pyc,而不调用py文件。直到你这个py文件有改变。python解释器会检查pyc文件中的生成时间,对比py文件的修改时间,如果py更新,那么就生成新的pyc。
相关文章推荐
- String转换成json格式(二):org.codehaus.jettison.json.JSONObject
- String转换成json格式(一):net.sf.json.JSONObject
- 【Java技术点】java实现map和object互转的三种方法
- Android属性动画(ObjectAnimator、PropertyValuesHolder、ValueAnimator、AnimatorSet)
- placeholder垂直居中(解决光标居中、文字不居中问题)
- Motion-Based Multiple Object Tracking阅读
- The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?...
- Objective-C 高性能的循环
- QMetaObject::connectSlotsByName: No matching signal for问题的解决方法
- json字符串转换为JSONObject和JSONArray
- Runtime方法的使用—Object篇
- Android JsonObject 数据的遍历
- Object C基础学习(三)
- Java Object 的介绍
- juce 中的ReferenceCountedObjectPtr
- 使用Objective-C的文档生成工具:appledoc
- 速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array
- JAVA、PHP、C#、Object-C 通用的DES加密解密
- java.lang.Object
- Object-c------类的本质