Python: Вопрос об импорте модулей из каталога выше и использовании во всех других модулях в будущем - PullRequest
0 голосов
/ 31 января 2020

Так что я новичок в Python и испытываю трудности с правильным пониманием системы импорта (не то, как я могу ее использовать, а ПРАВИЛЬНЫЙ способ ее использования). В моем проекте у меня есть два уровня, root и читатель. Внутри root у меня есть init .py, constants.py , controller.py и программа чтения каталогов. Внутри читателя у меня есть init .py, file_reader.py и test.py .

├─ root
   ├──── constants.py
   ├──── __init__.py
   ├──── controller.py
   ├──── reader
   │      ├────── file_reader.py
   │      ├────── __init__.py
   │      └────── test.py

Дело в том, что я используя мой constants.py внутри file_reader.py и используя метод из file_reader.py в моем controller.py , каталоге выше.

file_reader.py

from constants import STARTING_PARAMETER, STATUS_CODE, HEADER, ERROR_PATH

controller.py

import constants, reader

Когда я пытаюсь запустить с помощью python controller.py , работает отлично. Но когда я пытаюсь импортировать constants.py в file_reader.py , используя:

from root.constants import STARTING_PARAMETER, STATUS_CODE, HEADER, ERROR_PATH

Это дает мне ModuleNotFoundError: Нет модуля с именем 'root '.

Я понимаю, что я выполняю из controller.py , таким образом, используя тот же каталог, root, как базу. Я сомневаюсь, что если в будущем я захочу импортировать и использовать file_reader.py в другом модуле, который не находится в каталоге root, он не позволит мне импортировать константы, выдавая ошибку ModuleNotFoundError: Нет модуля с именем 'constants' . Есть ли правильный способ импортировать constants.py в file_reader.py и после этого импортировать file_reader.py в любой другой модуль, в том числе в root каталог, без ошибок? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...