Github Action运行pytest遇ModuleNotFoundError:找不到src模块
解决GitHub Action中Poetry项目的ModuleNotFoundError: No module named 'src'问题
问题分析
本地环境执行poetry run pytest测试正常,但GitHub Action中抛出src模块找不到的错误,核心原因是Poetry未将src目录作为可导入包安装到虚拟环境中,或工作流内环境变量配置未正确生效。
解决方案
1. 完善pyproject.toml的packages配置
确保pyproject.toml中明确声明要包含的src目录,告诉Poetry将其作为项目核心包处理:
[tool.poetry] # 保留原有name/version/authors等配置 packages = [{ include = "src" }]
2. 确保工作流安装完整依赖
修改GitHub Action的依赖安装步骤,显式指定安装开发依赖(避免因环境差异导致依赖缺失):
- name: Install dependencies run: | python -m pip install poetry==1.6.1 poetry install --with dev
3. 调整测试命令的环境变量
如果上述配置仍未解决问题,可在运行测试时通过Poetry传递PYTHONPATH,确保测试进程能定位到src目录:
- name: Run tests run: poetry run env PYTHONPATH="$PWD" pytest
4. 同步本地与远程配置
确认本地的pyproject.toml和poetry.lock已提交到GitHub,避免远程环境使用旧配置文件。
调试验证(可选)
若问题仍存在,可在工作流中添加调试步骤,检查虚拟环境的site-packages是否包含src:
- name: Debug site-packages run: poetry run ls -la $(poetry run python -c "import site; print(site.getsitepackages()[0])")
内容的提问来源于stack exchange,提问作者Mariano
相关产品推荐
相关产品推荐

