에러 메시지
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__))))))
# 세 번 일때는 반복해서 추가해주면 된다.
나의 경우 경로가 두 번 상위 디렉토리이므로 아래와 같이 해결하였다.
댓글