Python使用tailer库编写代码运行时报循环导入AttributeError错误
报错触发原因
问题根源是本地编写的脚本文件名和需要导入的第三方库完全重名,匹配Python模块导入的查找优先级,触发了自引用循环加载:
- Python导入模块时,会优先检索当前运行脚本所在目录,再检索全局安装的第三方库路径。当前脚本路径为
c:\Users\user\Documents\VSCODE\python\V1\tailer.py,文件本身命名为tailer.py,脚本内部的import tailer根本不会加载全局安装的第三方tailer库,反而会递归引用脚本自身。 - 当代码执行到
test = tailer.tail(open("test.txt"), 1)这行时,作为被加载对象的tailer模块(也就是自身脚本)才刚执行到第3行,未完成初始化、也不存在tail方法,因此抛出partially initialized module 'tailer' has no attribute 'tail'的报错,提示信息中提到的“疑似循环导入”是这类自引用问题的通用表现。 - 之前曾成功运行一次,大概率是当时临时调整过脚本文件名、未与第三方库重名,运行完成保存时又将文件名改回
tailer.py,导致后续所有运行都触发上述异常。
修复步骤
- 将自行编写的脚本文件重命名,名称不能与要导入的第三方库重名,比如改成
read_log_tail.py。 - 删除脚本所在目录下自动生成的
__pycache__缓存文件夹,避免Python读取旧模块缓存导致识别异常。 - 确认已完成第三方依赖安装,执行
pip install tailer完成库的部署后,重新运行脚本即可正常执行。
内容的提问来源于stack exchange,提问作者i y
相关产品推荐
相关产品推荐

