포스트

Python에서 ImportError attempted relative import with no known parent package 문제 해결하기

상대 임포트의 개념

상대 임포트는 같은 프로젝트 내의 다른 모듈을 불러올 때 사용되는 Python 문법입니다. 상대 임포트를 사용하면 파일의 위치가 변경되더라도 임포트가 손상되지 않는 장점이 있습니다. 하지만 이를 잘못 사용하면 ImportError 같은 문제가 발생할 수 있습니다. 문제의 오류명은 ‘ImportError: attempted relative import with no known parent package’ 입니다.

해결 방법 1: __init__.py 파일 활용

상대 임포트 문제의 첫 번째 해결 방법은 프로젝트 폴더에 __init__.py 파일을 만드는 것입니다. 이 파일이 있는 폴더는 Python 패키지로 인식됩니다. 이렇게 하면 Python은 상대 경로를 올바르게 파악할 수 있습니다.

해결 방법 2: 절대 경로 사용

절대 경로는 프로젝트의 루트 디렉토리부터 시작하는 전체 파일 경로입니다. 상대 임포트에서 문제가 생긴다면, 절대 경로를 사용하여 모듈을 임포트해보세요.

해결 방법 3: 실행 방식 변경

파이썬 파일을 직접 실행하는 대신에 -m 옵션을 사용하여 모듈로 실행할 수 있습니다. 예를 들어, python -m package.module 명령어는 package 패키지 안의 module을 실행합니다. 이 방식을 사용하면 상대 임포트 문제를 피할 수 있습니다.

해결 방법 4: sys.path 수정

sys.path는 Python이 모듈을 어디에서 찾을지를 결정하는 변수입니다. 이 리스트에 디렉토리 경로를 추가하면, Python은 해당 위치에서도 모듈을 찾습니다. 이 방법은 다소 위험할 수 있으므로 다른 해결책이 없을 때만 사용하세요.

정리

Python에서 상대 임포트 문제는 여러 가지 방법으로 해결할 수 있습니다. 가장 기본적인 방법은 __init__.py 파일을 만드는 것이며, 추가적으로 절대 경로 사용, 실행 방식 변경, sys.path 수정 등이 있습니다. 이러한 방법들을 적절히 활용하면 문제를 해결할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.