Предположим, что у нас есть два модуля с циклическими зависимостями:
# 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 "<stdin>", line 1, in <module>
File "pkg/a.py", line 1, in <module>
from . import b
File "pkg/b.py", line 1, in <module>
from . import a
ImportError: cannot import name a
Почему я получаю эту ошибку? Не совсем ли такая же ситуация, как и выше? (Связано ли это с этим вопросом?)
Изменить. Этот вопрос касается не разработки программного обеспечения. Я знаю способы избежать круговой зависимости, но меня все равно интересует причина ошибки.