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

运行pytest报错ModuleNotFoundError: No module named 'src'求助

解决pytest中ModuleNotFoundError: No module named 'src'的问题

不需要在src目录的__init__.py中导入模块来解决该问题,空的__init__.py已经足够将src标记为Python包。以下是具体的解决方案和原因分析:

核心原因

尽管你已经将/Users/xxx/projects/myproject加入sys.path,但可能存在以下问题:

  • 运行pytest时的工作目录不是myproject,导致Python无法从当前工作目录识别到src包;
  • pytest的导入逻辑可能会调整sys.path,覆盖了你手动设置的路径。

具体解决方案

1. 在项目根目录运行pytest

切换到myproject目录下执行pytest命令:

cd /Users/xxx/projects/myproject
pytest

此时Python会从根目录识别到src包,导入语句from src.module1 import myfunc就能正常工作。

2. 使用pytest的--pythonpath参数指定项目根目录

如果不想切换目录,可以在运行pytest时直接指定项目根路径:

pytest --pythonpath=/Users/xxx/projects/myproject

该参数会将指定路径添加到Python的模块搜索路径中,确保src包能被找到。

3. 将项目安装为可编辑模式(推荐)

在myproject目录下执行以下命令,将项目以可编辑模式安装到Python环境:

pip install -e .

这会在Python的site-packages中创建一个指向项目src目录的链接,无论你在哪里运行测试,都能直接导入src下的模块,这是Python项目开发的标准做法,同时支持后续的打包发布。

4. 调整导入语句(不推荐)

如果上述方法无法满足需求,可以尝试使用相对导入,但需要将test目录也标记为Python包(添加空的__init__.py),然后修改test_module1.py中的导入语句:

from ..src.module1 import myfunc

不过这种方式可能会导致直接运行测试文件时出错,因为相对导入仅在模块作为包的一部分被导入时生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:45:38