프로그래밍언어/파이썬[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