본문 바로가기
기타/오류 뿌수기

[python 오류] ModuleNotFoundError: No Module named ''(패키지 내 파이썬(폴더) import 오류)

by climba 2024. 3. 28.

에러 메시지

github에서 여러 레포를 클론해서 실행하다 보면, 분명 경로 내에 있는 python 파일 혹은 폴더를 import 하는데 ModuleNotFoundError: No Module named '파일명 or 폴더명'이 나오는 경우가 있다.

 

예를 들어, 아래와 같은 구조에서 experiment 폴더 내에 experiment/iteration1/invert.py를 실행하려 하고, invert.py에는 from augmentation import ~와 같이 augmentation 폴더 내에 있는 함수 및 클래스들을 불러오고 싶다.

이때 그냥 import 를 하면 아래와 같은 오류가 나오는데, augmentation 폴더가 있는 경로가 sys.path에 없어서이다.

import sys

print(sys.path) 를 통해 현재 sys.path에 어떤 경로가 추가되어있는지를 볼 수 있다.

 

해결 방법

sys.path.append('추가할 경로 명')을 통해 경로 추가를 해줄 수 있다.

조금 더 제너럴(?)한 방법으로는 아래와 같이 써서 해결해줄 수 있다.

# 경로가 한 번 상위 디렉토리일 때
sys.path.append(os.path.dirname(os.path.abspath))

# 경로가 두 번 상위 디렉토리일 때
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))))

# 세 번 일때는 반복해서 추가해주면 된다.

 

 

나의 경우 경로가 두 번 상위 디렉토리이므로 아래와 같이 해결하였다.

 

댓글