LINUX.ORG.RU

многопакетный проект на Python


0

0

Проект 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 красиво решать такие проблемы.

Спасибо.

anonymous

Извините, еще раз:

Проект 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 красиво
решать такие проблемы.

Спасибо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.