Python import с верхних уровней

Рейтинг: 0Ответов: 0Опубликовано: 26.02.2023

Предположим структура проекта выглядит примерно так:

/project
   /engine_
      reload.py
      changer.py
      main.py
   /exceptions_
      quality_extensions.py
      graph_extensions.py
   /validators_
      resp_validator.py
      some_validator.py
   /src
      1.png
      2.png
   /tests

Точка входа в папке engine_, main.py. В валидаторах импортируются с папки exceptions_ некоторые нужные типы исключений. В файлы в папке engine_ импортируются валидаторы с validators_, а также файлы из src. Постоянно требуется импорт на уровень выше. Данную проблему я решаю костылём, как я считаю.

sys.path.append(os.path.join(sys.path[0], '..'))

Это хоть и работает всегда но приходится писать в каждом файле в который импортируются файлы из папок на уровень выше. Питон по импорту вниз работает отлично, можно отталкиваться от этого, но структура проекта так себе будет. Вопрос: есть ли альтернатива?

UPDATE: Ну, это и вправду работает(раскидка везде файлов init.py). Проблема в том, что без init пакет не инициализируется. Чуть меньше действий по сравнению с методом в лоб с sys.path, но повторов не избежать. Буду копать дальше...

Ответы

Ответов пока нет.