본문 바로가기

파이썬

sys.path에 대해 알아보자

sys.path에 대해 알아보게 된 배경

파이썬 코딩을 하다가 python scripts/train.py를 실행시켰는데 에러가 났다.

원인은 train.py에 있던 from datasets.train_dataset import CustomDataset이었다.

ModuleNotFoundError: No module named 'datasets'

분명히 경로 설정을 했는데, 왜 'datasets' 모듈을 못 찾는 것인지 이해할 수 없었다.

그래서 열심히 다른 코드를 뒤지던 중, 해결방법을 찾았다.

 

import sys

sys.path.append(".")
sys.path.append("..")

이 코드를 추가하니 바로 해결이 되었다.

 

그렇다면 sys.path는 무엇인가?

import문을 통해 다른 파이썬 파일을 불러올 때, 파이썬은 내부적으로 파일을 찾기 위래 sys.pathPYTHONPATH에 있는 경로를 탐색한다.

이 두 변수를 적절히 수정해 임의의 디렉터리에 있는 파이썬 파일을 손쉽게 불러올 수 있다.

 

sys.path는 디렉터리의 경로들이 기록된 문자열 리스트이다.

이 리스트에 경로를 추가하면 해당 경로에 있는 파이썬 파일을 import 문으로 불러올 수 있다.

 

내가 sys.path.path(".")를 추가해서 현재 디렉터리와 동일한 위치에 있는 파일들을 읽을 수 있고, sys.path.path("..")를 추가해서 현재 디렉터리의 상위 디렉터리에 있는 파일들을 읽을 수 있다.

 

결론

모듈을 불러들였는데, 모듈을 찾을 수 없다는 에러가 나오면 sys.path.append()를 고려해보자.

 

참고

https://www.bangseongbeom.com/sys-path-pythonpath.html

 

sys.path, PYTHONPATH: 파이썬 파일 탐색 경로

import 문을 통해 다른 파이썬 파일을 불러올 때, 파이썬은 내부적으로 파일을 찾기 위해 sys.path와 PYTHONPATH에 있는 경로를 탐색합니다. 이 두 변수를 적절히 수정해 임의의 디렉터리에 있는 파이썬

www.bangseongbeom.com

 

'파이썬' 카테고리의 다른 글