Dependencias del módulo cíclico e importaciones relativas en Python
Supongamos que tenemos dos módulos con dependencias cíclicas:
# a.py
import b
def f(): return b.y
x = 42
# b.py
import a
def g(): return a.x
y = 43
Los dos módulos están en el directoriopkg
con una @ vac__init__.py
. Importandopkg.a
opkg.b
funciona bien, como se explica enesta respuesta. Si cambio las importaciones a importaciones relativas
from . import b
Me sale unImportError
al intentar importar uno de los módulos:
>>> 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
¿Por qué me sale este error? ¿No es la situación más o menos la misma que la anterior? (¿Está relacionado conesta pregunt?)
Edita: Esta pregunta no se trata del diseño de software. Conozco formas de evitar la dependencia circular, pero de todos modos estoy interesado en el motivo del error.