Python工具logChecker:脚本运行正常,pip安装后CLI执行重复两次求助
排查pip安装后Python CLI工具重复执行问题
我开发了一款用于日志对比的Python工具logChecker,直接以Python脚本形式运行时一切正常:
$ python3 src/logChecker/logChecker.py -pre logs_pre/ -post logs_pos/ -tf templ/ ##### Successfully Loaded Templates from folder templ/ ##### ##### Successfully Loaded Templates from folder templ/ ##### ##### Logs Loaded Successfully from folder logs_pre/ ##### ##### Logs Loaded Successfully from folder logs_pos/ ##### 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json Saving Excel # 0 sh_rtr_opsf_op_db.template # 1 sh_rtr_bgp_neigh.template # 2 sh_rtr_rt_tbl_summ.template # 3 sh_rtr_ospf_neigh.template
但通过pip3 install logChecker安装后,CLI调用工具会执行两次:
$ pip3 show logChecker Name: logChecker Version: 3.5.6 Summary: A simple log analysis tool Home-page: https://github.com/laimaretto/logChecker Author: Lucas Aimaretto Author-email: laimaretto@gmail.com License: BSD 3-clause Location: /home/lucas/.local/lib/python3.8/site-packages Requires: pandas, textfsm, ttp, XlsxWriter Required-by:
$ logChecker -pre logs_pre/ -post logs_pos/ -tf templ/ ##### Successfully Loaded Templates from folder templ/ ##### ##### Successfully Loaded Templates from folder templ/ ##### ##### Logs Loaded Successfully from folder logs_pre/ ##### ##### Logs Loaded Successfully from folder logs_pos/ ##### 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json Saving Excel # 0 sh_rtr_opsf_op_db.template # 1 sh_rtr_bgp_neigh.template # 2 sh_rtr_rt_tbl_summ.template # 3 sh_rtr_ospf_neigh.template ##### Successfully Loaded Templates from folder templ/ ##### ##### Successfully Loaded Templates from folder templ/ ##### ##### Logs Loaded Successfully from folder logs_pre/ ##### ##### Logs Loaded Successfully from folder logs_pos/ ##### 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json 0 0 sh_rtr_opsf_op_db.template agg01.cpe_rx.json 1 0 sh_rtr_bgp_neigh.template agg01.cpe_rx.json 2 0 sh_rtr_rt_tbl_summ.template agg01.cpe_rx.json 3 0 sh_rtr_ospf_neigh.template agg01.cpe_rx.json Saving Excel # 0 sh_rtr_opsf_op_db.template # 1 sh_rtr_bgp_neigh.template # 2 sh_rtr_rt_tbl_summ.template # 3 sh_rtr_ospf_neigh.template
问题仅出现在pip安装后的CLI调用场景,直接跑脚本或内部调用均正常。已检查setup.py未发现明显问题,以下是排查方向和解决思路:
- 检查setup.py的entry_points配置:确认console_scripts是否重复定义,或同时使用了console_scripts和scripts字段(两者都会生成CLI入口,可能导致重复触发)。
- 排查主脚本的执行逻辑:检查logChecker.py中是否有
if __name__ == "__main__":块之外的直接执行代码。通过entry_points调用时模块会被导入,若模块顶层有执行代码,会和main函数的调用重复执行;同时确认main函数是否被多次调用。 - 查看CLI入口脚本内容:用
which logChecker找到命令路径,查看生成的脚本,确认是否存在两次调用main函数的逻辑。 - 验证安装环境:检查是否存在多版本重复安装,或系统中多个bin目录下存在同名脚本,导致调用时触发两次。
- 隔离依赖干扰:在干净的虚拟环境中安装测试,排除textfsm、ttp等依赖的初始化逻辑可能带来的间接触发问题。
内容的提问来源于stack exchange,提问作者Lucas Aimaretto
相关产品推荐
相关产品推荐

