파이썬에서 모듈을 import할 때, 파이썬 인터프리터는 모듈을 찾기 위해 특정 디렉토리 경로들을 검색한다. 이 검색 경로들은 모듈 검색 경로(module search path)라고 불리며, 이는 sys 모듈의 path 변수에 저장되어 있다. 이 경로들은 파이썬이 모듈을 찾는 순서를 정의한다.
기본 검색 경로
파이썬 인터프리터가 모듈을 검색하는 기본 경로는 다음과 같다:
현재 디렉토리 (Current Directory): 스크립트가 실행되는 현재 디렉토리.
PYTHONPATH 환경 변수: 사용자가 정의한 디렉토리 목록. 운영 체제의 환경 변수로 설정할 수 있다.
표준 라이브러리 디렉토리 (Standard Library Directories): 파이썬 설치 디렉토리 내의 라이브러리 디렉토리들.
사이트-패키지 디렉토리 (site-packages Directory): 서드 파티 패키지들이 설치되는 디렉토리.
sys.path
sys.path는 모듈 검색 경로를 담고 있는 리스트이다. 이를 통해 파이썬이 모듈을 검색할 때 참조하는 경로들을 확인하고 수정할 수 있다.
sys.path 확인
다음은 sys.path를 확인하는 예제이다.
import sys
for path in sys.path:
print(path)
이 코드를 실행하면, 파이썬이 모듈을 검색하는 경로들이 출력된다.
/path/to/current/directory
/path/to/python/lib
/path/to/python/lib/site-packages
…
PYTHONPATH 환경 변수
PYTHONPATH 환경 변수는 모듈 검색 경로에 사용자 정의 경로를 추가할 때 사용된다. 이를 통해 파이썬 인터프리터가 모듈을 찾을 수 있도록 추가적인 디렉토리를 지정할 수 있다.
# PYTHONPATH 설정 (Unix/Mac)
export PYTHONPATH=/path/to/my/modules:$PYTHONPATH
# PYTHONPATH 설정 (Windows)
set PYTHONPATH=C:\path\to\my\modules;%PYTHONPATH%
sys.path 수정
프로그램 실행 중에 sys.path에 경로를 동적으로 추가할 수도 있다. 이는 특정 모듈이 특정 디렉토리에 있을 때 유용하다.
import sys
sys.path.append('/path/to/my/modules')
import mymodule
이 코드를 통해 /path/to/my/modules 디렉토리가 sys.path에 추가되고, mymodule을 임포트할 수 있게 된다.
모듈 검색 경로의 순서
모듈 검색 경로는 순서가 중요하다. 파이썬은 sys.path에 나열된 순서대로 디렉토리를 검색하며, 가장 먼저 찾은 모듈을 임포트한다. 따라서, 동일한 이름의 모듈이 여러 경로에 존재할 경우, sys.path의 앞부분에 있는 경로의 모듈이 임포트된다.
이러한 이유 때문에 기본 모듈과 같은 이름으로 모듈 파일을 만들면, 나중에 기본 모듈을 import하려고 할때 정상적으로 import가 안될 수 있다. 그럴 때는 모듈 파일의 이름을 다른 이름으로 변경해서 사용하는 편이 좋다.