Абсолютные импорты в Python работают некорректно

Пишу микросервисное приложение на Python FastAPI и столкнулся со следующей проблемой: при попытке абсолютного импорта какого-либо модуля из какой-либо директории самого микросервиса, импорт происходит из аналогичной директории другого микросервиса.

Дерево каталогов прикрепил ниже:

Дерево каталогов

В данном случае пытался в main.py auth-service импортировать schemas следующим образом: from app.schemas import user as user_schemas, а в итоге импорт произошёл из аналогичной директории profile-service.

При этом, если попробовать то же самое провернуть внутри gateway, то там все работает корректно.


Ответы (2 шт):

Автор решения: quantum32043

Решение было найдено, по какой-то причине все имена, которые содержали дефис, работали некорректно. После переименования все работает как надо

→ Ссылка
Автор решения: Amgarak

Открыв PEP 8 - вот что прочитал:

Package and Module Names

Modules should have short, all-lowercase names. Underscores can be used in the module name if it improves readability. Python packages should also have short, all-lowercase names, although the use of underscores is discouraged.

Перевод:

Имена пакетов и модулей

Модули должны иметь короткие имена, состоящие полностью из строчных букв. Подчеркивания можно использовать в имени модуля, если это улучшает читаемость. Пакеты Python также должны иметь короткие имена, состоящие полностью из строчных букв, использование подчеркиваний не рекомендуется.

Хоть в PEP 8 ничего про - не было написано, но как я понимаю причину по которой их не используют в названиях модулей/пакетов, связана с тем, что дефис (минус) является оператором в Python, что соответственно и вызывает ошибку импорта.

Так что согласно рекомендациям, нужно использовать такое название пакета: authservice.

Менее предпочтительное имя с подчеркиванием: auth_service

→ Ссылка