Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

전체 경로가 주어졌을 때 Python 모듈을 임포트하는 방법

전체 경로를 지정해 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_module

sys.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 방식이 더 깔끔합니다.