Предположим, у нас есть два модуля с циклическими зависимостями:
# a.py
import b
def f(): return b.y
x = 42
# b.py
import a
def g(): return a.x
y = 43
Два модуля находятся в каталоге pkg
с пустым __ init __. Py
. Импорт pkg.a
или pkg.b
работает нормально, как описано в в этом ответе . Если я изменю импорт на относительный импорт
from . import b
, я получаю ImportError
при попытке импортировать один из модулей:
>>> import pkg.a
Traceback (most recent call last):
File "", line 1, in
File "pkg/a.py", line 1, in
from . import b
File "pkg/b.py", line 1, in
from . import a
ImportError: cannot import name a
Почему я получаю эту ошибку? Разве ситуация не такая же, как и выше? (Связано ли это с этим вопросом ?)
Изменить : Этот вопрос не о разработке программного обеспечения. Мне известны способы избежать циклической зависимости, но меня все равно интересует причина ошибки.