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.path와 PYTHONPATH에 있는 경로를 탐색한다.
이 두 변수를 적절히 수정해 임의의 디렉터리에 있는 파이썬 파일을 손쉽게 불러올 수 있다.
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
'파이썬' 카테고리의 다른 글
TabError: inconsistent use of tabs and spaces in indentation (0) | 2022.09.28 |
---|