Pytest无法正确导入模块:ModuleNotFoundError问题求助
Pytest模块导入报错解决方案
核心原因
不是类导入的问题,本质是Python解释器未将app目录纳入模块搜索路径,导致无法识别src作为顶层模块。
解决方法
切换到正确目录运行pytest
打开终端,进入app目录后执行测试命令:cd /你的app目录路径 pytest tests/unit/test_file1.py此操作会自动将
app目录加入Python模块搜索路径,src下的子模块就能被正常识别。通过环境变量指定路径
无需切换目录,临时将app目录加入PYTHONPATH后运行测试:PYTHONPATH=/你的app目录路径 pytest /你的app目录路径/tests/unit/test_file1.py也可先设置环境变量,再执行测试:
export PYTHONPATH=/你的app目录路径 pytest tests/unit/test_file1.py修改conftest.py自动配置路径
在app/conftest.py中添加以下代码,自动将app目录加入搜索路径:import sys from pathlib import Path app_dir = Path(__file__).parent sys.path.append(str(app_dir))配置后无论在哪个目录运行pytest,都能正确识别模块。
验证搜索路径
在test_file1.py开头添加代码,打印当前Python模块搜索路径,确认app目录是否在其中:import sys print(sys.path)若
app目录不在输出列表,说明路径配置未生效。
补充说明
你提到的另一个函数测试文件运行正常,和函数/类的导入形式无关,大概率是该文件的导入写法适配了当时的运行路径(比如用了相对导入)。
内容的提问来源于stack exchange,提问作者cassidy
相关产品推荐
相关产品推荐

