from...import的严重教训
拿到别人写的python客户端的代码,在运行下面代码时出现问题:
1 !/usr/bin/env python 2 from koff import * 3 task_name = get_task() 4 module = __import__(task_name) 5 func = getattr(module, 'tst_lstil') 6 func()
在getattr处总是提示错误:TypeError: 'module' object is not callable,后来发现原来是from koff import *这个地方出了问题。在koff包目录下面有一个同名的getattr.py这个文件,所以导致调用时把标准模块的给覆盖了。
这个问题主要还是处在使用from..import *上面,如果是大型的项目程序,文件名和标准模块的相同是很有可能的,所以也不好避免。对于这种情况,我的建议是谨慎使用from...import *,应该是在你的文件中需要什么就import什么,明确指出模块。