본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 055. ImportError - attempted relative import with no known parent package

by about_IT 2025. 5. 29.
728x90

ImportError: attempted relative import with no known parent package 오류는 상대 경로 import를 시도했으나, 해당 스크립트가 패키지의 일부로 인식되지 않을 때 발생합니다. 이 오류는 주로 패키지 외부에서 직접 하위 모듈을 실행하거나, __main__ 모듈로 실행할 경우 발생합니다.

상대 import는 현재 모듈의 위치를 기준으로 경로를 계산하기 때문에, 상위 패키지의 문맥이 없으면 상대 경로를 해석할 수 없어 오류가 발생합니다. 즉, from .module import something과 같은 문법은 모듈이 패키지 내부에서 실행될 때만 유효합니다.

● 오류 발생 예시

# project/module1.py
from .utils import helper

위 코드를 python module1.py로 직접 실행하면 부모 패키지가 없기 때문에 오류가 발생합니다.

ImportError: attempted relative import with no known parent package

● 해결 방법

  • 프로젝트 루트에서 전체 패키지 구조로 실행: python -m package.module1
  • 상대 import 대신 절대 import 사용: from package.utils import helper
  • 실행 전 sys.path에 루트 경로 추가하거나 PYTHONPATH 설정

● 예시 코드 수정

# 상대 import → 절대 import로 수정
from .utils import helper   # 상대 경로 (문제 발생)
from package.utils import helper  # 절대 경로 (권장)

● 자주 하는 실수

  • 직접 실행 시 상대 import 사용
  • __init__.py 없는 구조에서 상대 import 시도
  • 상위 패키지 없이 하위 모듈만 독립 실행

● 결론

ImportError - attempted relative import with no known parent package 오류는 상대 import 사용 시 실행 환경이 패키지로 인식되지 않을 경우 발생합니다. 절대 import 사용을 권장하며, 반드시 패키지 구조 내에서 실행되도록 구성해야 합니다.

728x90