AttributeError: 'module' object has no attribute 'handlers'--Python子模块导入问题
基本代码如下:
import logging logger = logging.getLogger(‘mylogger‘) logger.setLevel(logging.INFO) fh=logging.handlers.RotatingFileHandler(‘/tmp/test.log‘, mode = ‘a‘, maxBytes=10240, backupCount=3, encoding=‘utf-8‘) formatter = logging.Formatter(‘%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s‘) fh.setFormatter(formatter) logger.addHandler(fh) logger.info(‘hello logging‘) logger.warning(‘hello logging‘) logger.error(‘hello logging‘) logger.critical(‘hello logging‘)
运行时报错:
AttributeError: ‘module‘ object has no attribute ‘handlers‘
原来导入logging模块后并没有自动导入其子模块handlers
import logging import logging.handlers ……重新运行,程序正常输出。
Python程序中模块在被访问前必须导入,import logging仅导入了logging模块,而logging是一个拥有子模块的包,这些子模块没有被自动载入。所以在访问签需要明确的导入logging.handlers子模块。
但有时候,在导入一些包时并不需要额外的动作就能自动导入其子模块,这是因为在包的__init__.py文件中进行了这些操作。在另外一些情况下,你导入的另外一些东西也可能会导入logging.handlers模块。无论如何,只要保证访问前
对应的子模块已经导入便可。某些时候一个模块看起来是个包实际上并不是,比如os和os.path。os并非包,它只是提供了其他的模块叫path,你可以通过os.path来访问。
AttributeError: 'module' object has no attribute 'handlers'--Python子模块导入问题,古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。