Так что я новичок в 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 каталог, без ошибок? Спасибо.