Если вы выполняете import foo
внутри bar
и import bar
внутри foo
, он будет работать нормально. К тому моменту, когда что-то действительно выполняется, оба модуля будут полностью загружены и будут иметь ссылки друг на друга.
Проблема заключается в том, что вместо этого вы делаете from foo import abc
и from bar import xyz
. Поскольку теперь каждый модуль требует, чтобы другой модуль уже был импортирован (чтобы имя, которое мы импортируем, существует), прежде чем оно может быть импортировано.