A J*_*A J 58 python pytest docker
当我在本地运行测试时它的工作正常,但是在创建了docker并在容器内部运行后,我遇到了错误.
/usr/local/lib/python3.5/site-packages/_pytest/config.py:325: in _getconftestmodules
return self._path2confmods[path]
E KeyError: local('/apis/db/tests')
During handling of the above exception, another exception occurred:
/usr/local/lib/python3.5/site-packages/_pytest/config.py:356: in _importconftest
return self._conftestpath2mod[conftestpath]
E KeyError: local('/apis/db/tests/conftest.py')
During handling of the above exception, another exception occurred:
/usr/local/lib/python3.5/site-packages/_pytest/config.py:362: in _importconftest
mod = conftestpath.pyimport()
/usr/local/lib/python3.5/site-packages/py/_path/local.py:680: in pyimport
raise self.ImportMismatchError(modname, modfile, self)
_pytest.config.ConftestImportFailure: ImportMismatchError('conftest', '/projects/my_project/db/tests/conftest.py', local('/apis/db/tests/conftest.py'))
Run Code Online (Sandbox Code Playgroud)
/ apis - 它是Dockerfile中的WORKDIR.
A J*_*A J 110
我已经通过删除test /目录下的所有__pycache__ pkg 修复了它,问题是当我创建docker image时它也选择了我所有的__pycache__和*.pyc文件,当时测试是使用我的本地机器路径而不是docker容器中的路径.
结论:在创建docker镜像之前清除*.pyc和__pycache__文件.
Dat*_*eek 25
您可以使用.dockerignore文件排除__pycache__
发送到docker镜像上下文的所有文件夹:
.dockerignore
文件,从所有子/文件夹中排除__pycache__
文件夹和*.pyc
文件:
**/__pycache__
**/*.pyc
Run Code Online (Sandbox Code Playgroud)
ami*_*mit 14
我正在使用 Python 3.6。就我而言,我ImportMismatchError
在不同的包下使用相同名称的模块,例如,A/B/main.py
和C/D/main.py
. Python 3 不需要__init__.py
源文件夹中的文件,但__init__.py
在下面添加A/B
并C/D
解决了问题。
小智 7
删除所有.pyc文件。你可以这样做
find . -name \*.pyc -delete
归档时间: |
|
查看次数: |
11459 次 |
最近记录: |