ValueError: попытка относительного импорта за пределы пакета верхнего уровня при попытке импорта моделей из другого приложения в django
В моем проекте под названием electron у меня есть два приложения django: первое api и второе elec_meter. Каталоги организованы следующим образом:
electron /
api/
views.py
...
elec_meter/
models.py
...
В файле api / views.py я хочу импортировать elec_meter / models.py. Вот как я это делаю:
from ..elec_meter.models import *
Но я получаю следующее сообщение об ошибке:
ValueError: attempted relative import beyond top-level package
или
from electron.elec_meter.models import *
В этом случае я получаю следующее сообщение об ошибке:
ModuleNotFoundError: No module named 'electron.elec_meter'
Как я могу решить эту проблему?
Корневым путем Python является каталог electron
, поэтому вы не можете работать с .from electron.…
Вы можете импортировать объекты, импортируя его, начиная с имени app, а не project. Таким образом, это означает, что вы импортируете это с:
from elec_meter.models import Model1, Model2
Хотя вы можете делать импорт с подстановочными знаками, это часто считается антипаттерном, поскольку неясно что вы импортируете. Это означает, что он может установить ссылки, указывающие на объекты, экспортируемые модулем elec_meter.models
, и таким образом переопределить исходные ссылки.