프로그래밍언어/파이썬[Error]

[파이썬][Error] 075. RuntimeError - cyclic dependency detected

about_IT 2025. 5. 30. 13:48
728x90

RuntimeError: cyclic dependency detected 오류는 파이썬에서 모듈 간의 순환 참조(circular import)나 객체 간 의존 구조에서 서로가 서로를 참조하여 끊임없이 반복되는 구조가 감지될 때 발생합니다. 이는 보통 잘못 설계된 모듈 간 import, 클래스 간 의존, 또는 캐시 시스템 등에서 발생합니다.

예를 들어 A 모듈이 B를 import하고, B 모듈이 다시 A를 import하는 상황에서 함수 또는 클래스가 서로를 호출하면, 파이썬은 순환 의존 구조로 간주하여 RuntimeError를 발생시킬 수 있습니다.

● 오류 발생 예시

# a.py
from b import func_b
def func_a():
    func_b()

# b.py
from a import func_a
def func_b():
    func_a()

위처럼 A와 B가 서로를 import하고 내부에서 호출까지 이어질 경우 순환 참조 오류가 발생할 수 있습니다.

● 해결 방법

  • 순환 참조되는 모듈 구조를 리팩토링
  • import 문을 함수 내부로 이동 (지연 import)
  • 공통 모듈을 분리하여 중복 의존 해소
  • 객체 간 참조가 순환하지 않도록 의존 구조 재설계

● 예시 코드 (지연 import)

# b.py

def func_b():
    from a import func_a
    func_a()

● 자주 하는 실수

  • 모듈 간 import 관계를 깊이 고려하지 않고 양방향 참조
  • 클래스 또는 싱글턴 객체 간 의존을 상호 설정
  • 캐시, 의존성 그래프에서 자기 자신을 참조하는 구조 설계

● 결론

RuntimeError - cyclic dependency detected 오류는 순환 참조로 인한 구조적 충돌로 발생합니다. 모듈 또는 객체 간의 참조 관계를 재검토하고, 의존성이 단방향이 되도록 구조를 재설계하는 것이 핵심입니다.

728x90