You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pytest执行纯Python项目单元测试遇ModuleNotFoundError求助

解决pytest找不到src模块的问题

问题原因

AWS Chalice框架会自动把项目根目录加入Python的模块搜索路径(sys.path),所以测试时能正常导入src下的模块;但纯Python项目没有这个自动配置,导致Python解释器找不到src目录,抛出ModuleNotFoundError。

三种解决方法

方法一:临时设置PYTHONPATH运行pytest

在项目根目录下执行命令,把当前目录(项目根目录)加入Python的搜索路径:

  • Linux/macOS:
PYTHONPATH=. pytest
  • Windows(命令提示符):
set PYTHONPATH=. && pytest
  • Windows(PowerShell):
$env:PYTHONPATH="."; pytest

优点:无需修改代码,临时生效;缺点:每次运行都要加前缀,适合快速测试场景。

方法二:通过conftest.py自动添加路径

在tests目录下创建conftest.py文件,内容如下:

import sys
from pathlib import Path

# 获取项目根目录路径并加入sys.path
sys.path.append(str(Path(__file__).parent.parent))

pytest运行时会自动加载这个文件,把项目根目录加入搜索路径,之后直接运行pytest即可。
优点:一劳永逸,仅针对当前项目的测试生效;缺点:仅适配pytest,其他运行方式需额外配置。

方法三:将项目安装为可编辑模式

  1. 在项目根目录下创建setup.py文件,内容:
from setuptools import setup, find_packages

setup(
    name="myproject",
    version="0.1.0",
    packages=find_packages(where="src"),
    package_dir={"": "src"},
)
  1. 执行安装命令:
pip install -e .

安装后,src下的模块会被当作正式包导入,不管在哪运行测试或代码都能正常导入。
优点:符合Python包规范,适合长期维护的项目;缺点:需额外配置setup文件,首次操作稍繁琐。

内容的提问来源于stack exchange,提问作者Eric Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:37:44