Здравствуйте!
При прохождении видеокурса по Django я видел как импортируются классы из других файлов через точку. И сам, повторяя действия из курса, так же могу импортировать классы из другого файла через конструкцию
from .models import Tag
Но решил создать маленький проект, проверить одну функцию, и в нем у меня система ругается на такой импорт.
from .A import A
Я получаю ошибку. А без точки - работает.
Traceback (most recent call last):
File "B.py", line 1, in <module>
from .A import A
SystemError: Parent module '' not loaded, cannot perform relative import
По ошибке гуглил, предлагают разые варианты решения, самый банальный - убрать точку.
Но меня все таки интересуют причины такого поведения. Из-за чего? Чем модуль в джанго отличается от обычного модуля питона?
Структура каталога
├── A.py
└── B.py
Не уверен насколько важно содержание файлов, но приведу ниже
Коротенький примерA.py
class A():
a = 1
b = 2
def plus(self):
c = self.a + self.b
print(c)
B.py
from .A import A
a = A()
a.plus()
Соответственно ошибка, когда использую импорт с точкой
user@userpc ~/ImportTrouble $ python3 B.py
Traceback (most recent call last):
File "B.py", line 1, in <module>
from .A import A
SystemError: Parent module '' not loaded, cannot perform relative import