模块已被识别仍报ModuleNotFoundError的解决求助
解决Python模块导入的ModuleNotFoundError问题
问题场景
文件夹结构:
|-fastapi |-app |-calc.py |-tests |-mytest.py
测试代码(mytest.py):
from app import calc
现象:编辑器能识别app和calc模块,但运行时抛出ModuleNotFoundError。
核心原因
编辑器会扫描整个项目目录识别模块结构,但Python运行时只会从当前工作目录和系统预设的模块路径里查找模块。直接运行mytest.py时,Python的工作目录是tests或你执行命令的目录,找不到上层的app模块。
解决方案
方法1:手动添加项目根目录到Python路径
- 终端临时设置:
进入fastapi目录,根据系统执行命令:- Windows:
set PYTHONPATH=%cd% python tests/mytest.py - Linux/macOS:
export PYTHONPATH=$(pwd) python tests/mytest.py
- Windows:
- 代码内动态添加:
在mytest.py最开头添加以下代码,把fastapi目录加入模块搜索路径:import sys from pathlib import Path # 获取fastapi目录的绝对路径(当前脚本的父级的父级) sys.path.append(str(Path(__file__).parent.parent)) from app import calc
方法2:给app目录添加__init__.py
在app目录下创建一个空的__init__.py文件,让Python明确识别这是一个可导入的模块包(Python 3.3+支持无__init__.py的命名空间包,但添加后兼容性更好)。
方法3:用测试框架运行(如果是测试代码)
如果这是测试脚本,推荐用pytest等测试框架:
进入fastapi目录,执行:
pytest tests/mytest.py
pytest会自动将当前目录(fastapi)加入模块搜索路径,无需额外配置。
内容的提问来源于stack exchange,提问作者Alisha
相关产品推荐
相关产品推荐

