Как импортировать файл из вложенного каталога с помощью django

Я создаю веб-приложение django. Для кода у меня есть несколько вспомогательных функций, которые я пытаюсь импортировать, но django выдает мне ModuleNotFoundError. Это структура моего файла

── stock_predictor
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── models_helper
    │   ├── __init__.py
    │   ├── arma.py
    │   ├── data_handler.py
    │   └── yahoo_stock_data.py
    ├── tasks.py
    ├── templates
    │   ├── base.html
    │   └── homepage.html
    ├── tests.py
    ├── urls.py
    └── views.py

Здесь каталог models_helper содержит список файлов, которые я хочу импортировать в файл tasks.py. Я попробовал добавить файл __init__.py в каталог models_helper, но это не решило проблему. Я также попробовал добавить путь к файлу sys.path. Это тоже, похоже, не решает проблему. Мои импорты в файлах tasks.py выглядят следующим образом.

from models_helper.yahoo_stock_data import YahooStockData
from models_helper.data_handler import DataHandler
from models_helper.arma import AlgoARMA

Ошибка, которую я получаю, выглядит следующим образом.

ModuleNotFoundError: No module named 'models_helper'

NOTE: Похоже, это проблема django, поскольку я могу импортировать, используя sys и запускать скрипт python прямо из терминала.

Вот ссылки, по которым я перешел, чтобы заставить код работать, но он не работает.

  1. Importing modules from nested folder
  2. Import a module from a relative path
  3. Importing files from different folder

Обычно корнем является каталог, расположенный прямо над приложениями, поэтому вы импортируете с именем приложения в качестве имени первого модуля:

from stock_predictor.models_helper.yahoo_stock_data import YahooStockData

в модулях в приложении (stock_predictor), например models.py, views.py, tasks.py и т.д. вы можете использовать относительный импорт, например:

# for models.py, views.py, tasks.py, etc.

from .models_helper.yahoo_stock_data import YahooStockData

Вы хотите добавить импорт в task.py, тогда он должен выглядеть как

относительный импорт

from models_helper import YahooStockData
from models_helper import DataHandler
from models_helper import AlgoARMA

поскольку init.py показывает, что это папка пакета, вы должны импортировать из этого пакета, здесь models_helper - пакет, а YahooStockData - ваш импорт.

абсолютный импорт

import models_helper.yahoo_stock_data 
import models_helper.data_handler
import models_helper.arma

Импортировать из root

from stock_predictor.models_helper.yahoo_stock_data import YahooStockData
from stock_predictor.models_helper.data_handler import DataHandler
from stock_predictor.models_helper.arma import AlgoARMA
Вернуться на верх