正如标题所说 - 我的文件夹结构是这样的:
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。
提前感谢!
如注释中建议的:从根目录中删除__init__.py
,添加一个名为conftest.py
的空文件。
有关conftest.py
技巧的解释,请查看我对类似问题的其他答案,例如pytest找不到模块或将pytest与src层一起使用。简而言之,添加conftest.py
会将项目目录添加到sys.path
,因此config
模块变得可导入。
至于删除__init__.py
文件,它与错误无关,它只是不属于那里。当然,您不想将项目目录设置为包,因此尽早删除不需要的 init 模块将避免将来出现一些意外错误。