только один раз. Чтобы предотвратить это, я поместил в свой базовый скрипт следующее:
оложим, у нас есть два модуля с циклическими зависимостями:
# 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
Почему я получаю эту ошибку? Разве ситуация не такая же, как и выше? (Это связано сэтот вопрос?)
редактировать: Этот вопрос не о разработке программного обеспечения. Мне известны способы избежать циклической зависимости, но в любом случае меня интересует причина ошибки.