Проект Python разделен на несколько пакетов.
Например так: <...>/project/main.py <...>/project/part_X/<файлы *.py, в том числе и __init__.py> <...>/project/part_Y/<файлы *.py, в том числе и __init__.py>
Файл main.py импортирует файлы из project/part_X/ и project/part_Y, и, допустим, некоторые файлы из project/part_Y импортируют файлы из project/part_X.
Можно в main.py сделать так:
import sys sys.path.append ('./part_X/')
Тогда импоритируемые из main.py файлы из project/part_Y будут видеть файлы из project/part_X.
Но я всегда использую возможность запускать модуль автономно и использую эту возможность для теста модуля. Т. е. пишу в конце модуля такой код:
def test (): <something>
if __name__ == '__main__': test ()
И вот такой модуль из project/part_Y уже не будет видеть модули из project/part_X. Если теперь в нем пропишем
import sys sys.path.append ('../part_X/')
то и автономно его запускать можно. Но давайте запустим наше приложение, т. е. модуль main.py. Мы получим такой sys.path:
[......, '<...>/project/part_X', '<...>/part_X']
И это мне не очень нравится. Расскажите пожалуйста, как в Python красиво решать такие проблемы.
Спасибо.