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

如何在GitHub Actions中让单元测试找到src目录下的Python包

GitHub Actions中Python单元测试找不到src目录包的解决方法

问题详情

在GitHub Actions中运行Python库单元测试时出现ModuleNotFoundError,报错信息:

Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/foo_test.py:11: in <module>
    from mylib import Foo
E   ModuleNotFoundError: No module named 'mylib'

项目目录结构:

my_project/
|-- src/
|   |-- mylib/
|       |-- __init__.py
|       |-- foo.py
|
|-- tests/
|   |-- test_mylib.py (imports mylib.foo.Foo) no src prefix
|
|-- setup.py

setup.py配置片段:

packages=find_packages(where='src'),
package_dir={'': 'src'},

已尝试创建pytest.ini并设置srcpaths = src,但问题未解决,需求是无需修改测试文件的导入前缀即可正常执行测试。

可行解决方案

1. 安装项目的可编辑版本

在GitHub Actions的测试步骤中,先执行安装命令:

pip install -e .

该命令会将src目录下的包以可编辑模式安装到Python环境,让测试代码能直接识别mylib包,和本地PyCharm的运行环境保持一致。

2. 临时设置PYTHONPATH环境变量

在运行pytest前,将src目录添加到Python的模块搜索路径中:

PYTHONPATH=$(pwd)/src pytest tests/

或者分两步执行:

export PYTHONPATH="$PYTHONPATH:$(pwd)/src"
pytest tests/

3. 修正pytest配置文件

将pytest.ini中的配置替换为:

[pytest]
pythonpath = src

注意:旧版本pytest的srcpaths参数已被弃用,新版本需使用pythonpath来指定额外的模块搜索目录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:33