Python脚本导入报错:无法从'logger'导入'get_logger'
解决ImportError: cannot import name 'get_logger' from 'logger'的问题
问题原因
你脚本里要导入的get_logger函数,不是你当前Python环境中安装的第三方logger包(即C:\Users\MyName\AppData\Local\Programs\Python\Python311\Lib\site-packages\logger)里的内容。这个第三方包的__init__.py中根本没有定义get_logger函数,所以导入失败。
你朋友的脚本原本依赖的是他自己编写的日志模块(可能是单个logger.py文件,或是名为logger的文件夹),里面才包含get_logger函数,但你未将这个自定义模块放到脚本可识别的位置。
解决方法(二选一即可)
方法一:修改脚本,用Python自带日志模块(最简单,无需额外文件)
把脚本中引发错误的这段代码:
from logger import get_logger #<----- Error dir_path = os.path.dirname(os.path.realpath(__file__)) logging = get_logger(dir_path) logger = logging.getLogger(__name__) logger = logging.getLogger()
替换为以下代码:
import logging from logging.handlers import RotatingFileHandler import os dir_path = os.path.dirname(os.path.realpath(__file__)) # 配置日志:同时输出到脚本目录下的app.log文件和控制台 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ RotatingFileHandler(os.path.join(dir_path, 'app.log'), maxBytes=1024*1024, backupCount=5), logging.StreamHandler() ] ) logger = logging.getLogger(__name__)
这段代码用Python自带的logging标准库实现了和get_logger类似的功能:生成日志文件并在控制台打印日志,完全能满足脚本的日志需求。
方法二:找回朋友的自定义logger模块
- 若能联系上朋友,让他把自己编写的
logger.py文件或包含get_logger函数的logger文件夹发给你。 - 将这个文件/文件夹放到你运行脚本的同一目录下,脚本会优先加载这个自定义模块,而非site-packages中的第三方包。
- 若仍有冲突,可卸载无用的第三方
logger包:打开命令提示符,输入pip uninstall logger,按回车确认卸载。
内容的提问来源于stack exchange,提问作者F H
相关产品推荐
相关产品推荐

