전체 경로를 지정해 Python 모듈 임포트하기
모듈의 전체 경로가 주어진 상태에서 이를 임포트하는 가장 간단한 방법은 해당 경로를 sys.path 변수에 추가하는 것입니다. sys.path 변수에는 소스 파일에서 임포트된 모듈을 찾을 때 Python 인터프리터가 탐색하는 디렉터리 목록이 담겨 있으며, 여기에 원하는 경로를 추가하면 인터프리터가 해당 위치의 모듈을 인식할 수 있게 됩니다.
예제
import sys
sys.path.append('/foo/bar/my_module')
# 모듈 안에 my_func라는 함수가 있다면 다음과 같이 임포트할 수 있습니다.
from my_module import my_func
# 또는 모듈 전체를 임포트할 수도 있습니다.
import my_modulesys.path.append()는 런타임에만 적용되므로, 스크립트가 실행되는 동안에만 유효합니다. 프로젝트 전반에서 특정 경로를 계속 사용해야 한다면 환경 변수 PYTHONPATH에 해당 경로를 등록하는 방법도 고려해 볼 수 있습니다.
importlib를 활용한 대체 방법
Python 3.5 이상에서는 importlib.util을 사용해 파일 경로에서 직접 모듈을 로드할 수도 있습니다. 이 방법은 sys.path를 수정하지 않고 특정 파일 하나만 불러오고 싶을 때 유용합니다.
import importlib.util
spec = importlib.util.spec_from_file_location("my_module", "/foo/bar/my_module.py")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
# 이후 module.my_func 형태로 모듈 내 함수와 클래스를 사용할 수 있습니다.두 방식 중 상황에 맞는 방법을 선택하면 됩니다. 여러 모듈이 함께 위치한 디렉터리를 통째로 사용하고 싶다면 sys.path 추가 방식이 편리하고, 단일 파일만 필요하다면 importlib 방식이 더 깔끔합니다.