#python #django
Вопрос:
У меня есть два приложения django в моем проекте в моем проекте под названием electron: первый 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'
Как я могу решить эту проблему?
Комментарии:
1.
from elec_meter.models import *
2. Но, пожалуйста, не используйте
import *
. Упомяните, что вы импортируете, импорт всех элементов может привести к неожиданным результатам, так как он может переопределять существующие ссылки.3. ОК. Это работает, но Пыхарм считает эту строку ошибкой.
4. затем вы выбрали неверный каталог как «Корневой каталог Python», нажмите кнопку rigt в
electron
каталоге и обозначьте его как корневой каталог python.5. Идеально ! Спасибо.
Ответ №1:
Корневой путь Python-это electron
каталог, с которым вы не можете работать . from electron.…
Вы можете импортировать объекты, импортировав их, начиная с имени приложения, а не проекта. Это, таким образом, означает, что вы импортируете это с:
from elec_meter.models import Model1, Model2
хотя вы можете импортировать подстановочные знаки, это часто считается антипаттером, поскольку неясно, что вы импортируете. Это означает, что он может устанавливать ссылки, указывающие на объекты, экспортируемые elec_meter.models
модулем, и, таким образом, переопределять исходные ссылки.