Python导包报ModuleNotFoundError: No module named错误排查
报错核心原因
ModuleNotFoundError: No module named 'Bot_Tracker'的本质是Python模块搜索路径未覆盖Bot_Tracker包所在的目录:
- 直接运行
Tests/test_matchhistory.py时,Python默认会将脚本自身所在的Tests/目录加入模块搜索路径,但Bot_Tracker是与Tests平级、存放在code/目录下的包,不在当前搜索路径范围内,因此无法被识别。
解决方案
以下方案按适用场景排序,按需选择即可:
单脚本快速调试:手动追加搜索路径
在test_matchhistory.py的所有业务导入语句之前,添加如下代码,手动将Bot_Tracker所在的父目录加入搜索路径:import sys from pathlib import Path # 定位当前脚本的上两级目录(即code/目录)并加入搜索路径 sys.path.append(str(Path(__file__).parent.parent.resolve())) # 原有导入语句无需修改,可正常执行 from Bot_Tracker.matchhistory import compMatchHistory该方案无需改动项目结构,适合临时跑测试用,注意路径层级不要写错。
不改代码运行:使用模块模式启动脚本
终端切换到code/目录下,不要直接指定脚本路径运行,而是通过-m参数以模块模式执行测试:# 先切到code目录 cd /path/to/your/code # 以模块方式运行测试文件 python -m Tests.test_matchhistory该模式下Python会自动将当前终端所在的
code/目录加入搜索路径,可直接识别平级的Bot_Tracker包。长期项目维护:以可编辑模式安装项目
在code/目录下新建pyproject.toml配置文件,写入基础配置:[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "BotTracker" version = "0.0.1" packages = ["Bot_Tracker"]随后在
code/目录下执行安装命令:pip install -e .安装完成后,当前Python环境会永久识别
Bot_Tracker包,无论在哪个路径运行项目相关脚本都不会触发导入错误,适合长期开发的项目使用。
内容的提问来源于stack exchange,提问作者Liferafter
相关产品推荐
相关产品推荐

