pytest导入测试目录模块失败:ModuleNotFoundError问题求助
解决pytest导入ModuleNotFoundError问题
解决方案
方法1:修正导入路径
修改test_MyTest.py中的导入语句,匹配实际文件结构:
from lexor.lexor.MyClass import MyClass
方法2:设置PYTHONPATH环境变量
运行pytest时,将当前目录(外层lexor目录)加入Python模块搜索路径:
- Linux/macOS终端:
PYTHONPATH=$(pwd) pytest
- Windows命令提示符:
set PYTHONPATH=%cd% && pytest
设置后,原导入语句from lexor.MyClass import MyClass即可正常工作。
方法3:使用相对导入(不推荐)
若将tests目录视为包,可使用相对导入,但这种方式对pytest运行方式有局限:
from ..lexor.MyClass import MyClass
注意:必须从外层lexor目录运行pytest,且不能直接指定单个测试文件执行。
问题原因
你的项目结构中,MyClass.py实际位于外层lexor/lexor/MyClass.py,在外层lexor目录运行pytest时,Python默认将当前目录加入模块搜索路径。原导入语句from lexor.MyClass import MyClass会尝试在外层lexor目录下查找MyClass.py,但该文件不存在,因此触发ModuleNotFoundError。
内容的提问来源于stack exchange,提问作者Lex Podgorny
相关产品推荐
相关产品推荐

