728x90
ImportError: cannot import name 'child' from 'parent.module'
오류는 모듈 내에 존재하지 않는 이름(클래스, 함수, 변수 등)을 import하려고 할 때 발생합니다. 즉, 지정한 모듈은 존재하지만 그 안에 'child'라는 이름이 정의되어 있지 않을 때 나타납니다.
주로 오탈자, 구조 변경, 순환 참조, 또는 모듈 이름과 변수 이름 충돌로 인해 발생하며, 프로젝트 구조가 복잡할수록 자주 마주치는 오류입니다.
● 오류 발생 예시
from parent.module import child
이때 parent.module
은 존재하지만 그 안에 child
라는 이름이 정의되어 있지 않으면 오류가 발생합니다.
ImportError: cannot import name 'child' from 'parent.module'
● 해결 방법
- 모듈 내부에 해당 이름이 실제로 정의되어 있는지 확인
- 오탈자 여부 점검 (대소문자 구분 포함)
- 해당 이름이
__all__
에 포함되어 있는지 확인 (필요한 경우) - 순환 import 문제 시 구조를 재조정하거나 지연 import 사용
● 예시 코드
# parent/module.py
class Parent:
pass
# 잘못된 import
from parent.module import Child # → ImportError 발생
● 자주 하는 실수
- 모듈 내 구조 변경 후 import 문 수정 누락
- 하위 모듈을 __init__.py에 노출하지 않음
- 상호 참조(circular import)로 인한 지연 정의 발생
● 결론
ImportError - cannot import name 'X' from 'Y'
오류는 모듈은 존재하나, 해당 이름이 정의되어 있지 않을 때 발생합니다. 모듈 내부 정의와 구조를 정확히 파악하고, 순환 참조를 피하는 구조 설계가 중요합니다.
728x90