Python ImportError-CircleCI上的测试失败,但在本地通过
正如标题所示-我的文件夹结构如下:Python ImportError-CircleCI上的测试失败,但在本地通过,python,python-3.x,pytest,circleci,Python,Python 3.x,Pytest,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 测试文件有一
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*
行。从根目录本地运行$pytest
,或者通过bash shell运行到容器(在virtualenv内部)中,效果与预期一样,但在CircleCI上,生成失败,因为上面的代码行没有名为“config”的模块。我正在使用python3.5和circleCI 2.0
提前谢谢 如注释中所建议的:从根目录中删除
\uuuu init\uuuuuuuuuuuupy
,添加一个名为conftest.py
的空文件
有关conftest.py
技巧的解释,请查看我对类似问题的其他回答,例如或。简而言之,添加一个conftest.py
会将项目目录添加到sys.path
,因此config
模块变得可导入
至于删除
\uuuu init\uuuu.py
文件,它与错误无关,只是不属于那里。当然,您不希望将项目目录添加到包中,因此尽早删除不需要的init模块将在将来为您避免一些意外错误。从根目录中删除\uuuu init\uuuuuuu.py
,添加一个名为conftest.py
@hoefling的空文件,谢谢!如果您可以添加您的评论和解释作为答案,那就太好了,我会将其标记为已接受。这仅对pytest或unittest模块有效吗?我还发现,导入测试模块失败