Я получаю следующую ошибку при попытке запустить PYTHONPATH=${DIR}/src:${DIR}/test pytest -vvv test/unittests
в контейнере Docker (работает, когда я пытаюсь запустить его на моем компьютере):
ImportError while loading conftest '/.../test/conftest.py'.
test/conftest.py:3: in <module>
from flask_app import create_api
src/flask_app/__init__.py:4: in <module>
api = create_api(app)
src/flask_app/app.py:22: in create_api
from . data.views import master_data
src/flask_app/data/views.py:3: in <module>
from common.my_module import my_func
src/common/my_module/__init__.py:1: in <module>
from common.my_module.bar_module import my_func # NOQA
src/common/my_module/bar_module.py:5: in <module>
import common.my_module.errors as err
E AttributeError: module 'common' has no attribute 'my_module'
Моя структура репо
src/
common/
my_module/
__init__.py
errors.py
bar_module.py
foo_module.py
test/
unittests/
__init__.py
test_bar_module.py
conftest.py
pytest.ini
help(common)
:
>>> import common
>>> help(common)
Help on package common:
NAME
common
PACKAGE CONTENTS
my_module (package)
foo_module
FILE
/.../src/common/__init__.py
sys.path
:
>>> import sys
>>> sys.path
['', '/.../src', '/.../test', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
И я могу импортировать foo_module.py
из общего числа без ошибок.Таким образом, он может использовать foo_module.py
, но не может использовать my_module/bar_module.py