Ошибка импорта. Циркулярные ссылки

У меня есть такая посылка

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleA.py
        moduleB.py
        moduleC.py
        moduleD.py
    subpackage2/
       __init__.py
       moduleX.py
       moduleY.py
       moduleZ.py

В moduleB.py я импортирую

from moduleA import bar

В модуль А я импортирую

from moduleB import foo

Я получаю ImportError.

ImportError: cannot import name foo

В чем может быть проблема здесь? и чтобы избежать этой проблемы, что мне делать? и что я должен написать в_init_.py pf пакет, subpackage1, subpackage2?

_init_.py of subpackage1

from moduleA import *
from moduleB import *
from moudleC import *
from moudleD import *

_init_.py из subpackage2

from moduleX import *
from moduleY import *
from moduleZ import *

_init_.py пакета

from subpackage1 import *
from subpackage2 import *

Есть ли проблемы с моим_init_.py файлы?

EDIT: I have changed imports

moduleB

from .moduleA import bar

ModuleA

from .moduleB import foo

Тем не менее, я получаю ту же ошибку импорта.

ImportError: cannot import name foo

EDIT:

moduleB

def Bar():
    def __init__(self):
        self.foo = Foo()
        self.val = 10
        .
        .

ModuleA

def Foo():
    def __init__(self):
        self.bar = Bar()
        self.val = 5
        .
        .   

Я хочу сделать это. И я настаиваю на сохранении обоих классов в разных файлах. Как я должен импортировать?

Ответы на вопрос(2)

Ваш ответ на вопрос