Как импортировать модуль из вложеной директории, импортирующий модуль из вложеной директории
Проблема:
Не выходит запустить функцию импортируемую из вложенной директории, которая использует переменную импортируемую из на уровень глубже вложенной директории.
Дерево проекта:
Содержание файлов:
При запуске my_func() из main.py появляется ошибка:
Traceback (most recent call last):
File "c:\Users\user\Desktop\My project\main.py", line 1, in <module>
from functions.func import my_func
File "c:\Users\user\Desktop\My project\functions\func.py", line 1, in <module>
from variables.vars import my_var
ModuleNotFoundError: No module named 'variables'
Проблема не наблюдается если все три файла находятся на одном уровне вложенности.
Уважаемые знатоки!
Как правильно настроить импорты, чтобы my_func() можно было запускать из main.py?
Ответы (2 шт):
Попробуйте так:
func.py
# -> vvvvvvvvvv <----------------------------------------------------
from functions.variables.vars import my_var
def my_func():
print(my_var)
Импорт бывает абсолютный и относительный.
Абсолютный импорт включает полный путь к вашему скрипту, начиная с корневой папки программы.
При относительном импорте указывается, где находятся ваши ресурсы относительно текущего файла кода. Используется точечная нотация - относительный путь (начиная с пути текущего модуля) к желаемому модулю. Формат from .<модуль/пакет> import X, где символы точки . показывают, на сколько директорий «вверх» нужно подняться. Одна точка . показывает текущую директорию, две точки .. — на одну директорию выше и т. д.
from .variables.vars import my_var

