首页 > 解决方案 > ImportError - 在 CircleCI 上测试失败但在本地通过

问题描述

正如标题所说 - 我的文件夹结构是这样的:

venv/  
__init__.py  
.circleci/  
    config.yml  
Dockerfile   
docker-compose.yml  
config.py  
requirements.txt  
src/  
    __init__.py  
    other_scripts.py  
tests/  
    __init__.py  
    test_a.py  
    test_b.py  

测试文件有from config import *一行。从本地根目录或通过 bash shell运行$ pytest到容器(在 virtualenv 内)按预期工作,但在 CircleCI 上,构建失败并出现ImportError: No module named 'config'上述代码行。我正在使用 python3.5 和 circleCI 2.0。

提前致谢!

标签: pythonpython-3.xpytestcircleci

解决方案


正如评论中所建议的:__init__.py从根目录中删除,添加一个名为conftest.py.

有关conftest.py技巧的解释,请查看我对类似问题的其他答案,例如pytest cannot find moduleUsing pytest with a src layer。简而言之,添加 aconftest.py会将项目目录添加到sys.path,因此config模块变得可导入。

至于删除__init__.py文件,它与错误无关,它不属于那里。当然,您不想将项目 dir 设置为包,因此提前删除不需要的 init 模块可以避免将来出现一些意外错误。


推荐阅读