Python · Intermediário · Português · Técnico
importação circular
Situação em que o módulo A importa B e B importa A, de modo que um deles é carregado pela metade e falta algum nome, causando ImportError ou AttributeError.
Onde usar
Aparece quando o projeto cresce e modelos e serviços passam a se referenciar. Em code review, as saídas usuais são mover o import para dentro da função, extrair um terceiro módulo ou usar TYPE_CHECKING.
Em código
# a.py
from b import g
def f(): return 1
# b.py
from a import f # ciclo: a importa b
def g(): return f()
# ImportError: partially initializedExemplos
Deu importação circular entre o modelo e o serviço.
Extrai os tipos para um terceiro módulo e desfiz a importação circular.
Cuidado
Não resolva só embaralhando a ordem dos imports no topo; o ciclo continua e volta a quebrar depois.
Sinônimos
import circular