У меня есть следующая структура проекта python3:
tests/
- testsuite_service1/
- test_main.py
- testsuite_service2/
- test_main.py
src/
- service1/
- codebase/
- __init__.py
- main.py
- logger.py
- waiter.py
- service2/
- codebase/
- __init__.py
- main.py
- logger.py
- waiter.py
В моих тестах (pytest) , я импортирую так:
from src.service1.codebase.waiter import check_status
Для импорта определенной функции в модуле service1.
Внутри waiter.py
в сервисе1 Я импортирую функцию из logger.py
, вот так
from logger import configure_logger
однако при запуске тестов я получаю ошибку:
Traceback:
tests/test_main/test_main.py:3: in <module>
from src.service1.codebase.waiter import check_status
src/codebase/waiter.py:8: in <module>
from logger import configure_logger
E ModuleNotFoundError: No module named 'logger'.
Это происходит при запуске теста, такое чувство, что waiter.py
не ищет в своем локальном каталоге, чтобы найти logger.py
, а может быть в каком-то другом месте?
Изменение на
from .logger import configure_logger
действительно решает проблему, но вызывает проблемы со средой выполнения, которую я планирую развернуть в (один zip-файл service1 без родительского каталога) и, таким образом, выдает ошибку Unable to import module 'main': attempted relative import with no known parent package
Можно ли не использовать относительный импорт, и мой тест понимает, где найти нужные файлы?