Python 설치 환경의 구성 정보는 sysconfig 모듈을 통해 손쉽게 확인할 수 있습니다. 예를 들어 설치 경로 목록이나 현재 설치 플랫폼에 특화된 구성 변수들을 조회할 때 유용합니다.
sysconfig 모듈은 구성 변수에 접근할 수 있도록 다음과 같은 함수들을 제공합니다.
sysconfig.get_config_vars()
인자 없이 호출하면 현재 플랫폼과 관련된 모든 구성 변수를 딕셔너리 형태로 반환합니다.
>>> import sysconfig
>>> sysconfig.get_config_vars()
{'prefix': 'E:\\python37', 'exec_prefix': 'E:\\python37', 'py_version': '3.7.2', 'py_version_short': '3.7', 'py_version_nodot': '37', 'installed_base': 'E:\\python37', ...}인자를 전달하면 해당 키에 대응하는 값들의 리스트를 반환합니다. 만약 특정 키의 값을 찾지 못하면 None이 반환됩니다.
>>> sysconfig.get_config_vars('base','EXE')
['E:\\python37', '.exe']sysconfig.get_config_var()
이 함수는 단일 변수 이름에 해당하는 값을 반환합니다. 내부적으로는 get_config_vars().get(name)과 동일하게 동작하며, 이름을 찾지 못하면 None을 반환합니다.
>>> sysconfig.get_config_var('VERSION')
'37'
>>> sysconfig.get_config_var('srcdir')
'E:\\python37'설치 스킴(Installation Scheme)
Python은 플랫폼과 설치 옵션에 따라 서로 다른 설치 스킴을 사용합니다. 현재 지원되는 스킴은 다음과 같습니다.
| posix_prefix | Linux, Mac OS X 등 POSIX 계열 플랫폼용 기본 스킴 |
| posix_home | POSIX 플랫폼에서 home 옵션을 지정하여 설치할 때 사용되는 스킴 |
| posix_user | POSIX 플랫폼에서 Distutils를 통해 컴포넌트를 설치하고 user 옵션을 사용할 때 적용되는 스킴 |
| nt | Windows 등 NT 계열 플랫폼용 기본 스킴 |
| nt_user | NT 플랫폼에서 user 옵션을 사용할 때 적용되는 스킴 |
get_path_names()
이 함수는 sysconfig가 현재 지원하는 모든 경로 이름을 튜플 형태로 반환합니다.
>>> sysconfig.get_path_names()
('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', 'scripts', 'data')각 설치 스킴은 고유한 식별자를 가진 여러 경로들로 구성됩니다. 주요 경로 이름은 다음과 같습니다.
| stdlib | 플랫폼에 종속되지 않는 표준 Python 라이브러리 파일이 위치한 디렉터리 |
| platstdlib | 플랫폼에 종속적인 표준 Python 라이브러리 파일이 위치한 디렉터리 |
| platlib | 사이트별·플랫폼별 파일을 위한 디렉터리 |
| purelib | 사이트별 파일 중 플랫폼에 종속되지 않는 파일을 위한 디렉터리 |
| include | 플랫폼에 종속되지 않는 헤더 파일을 위한 디렉터리 |
| platinclude | 플랫폼에 종속적인 헤더 파일을 위한 디렉터리 |
| scripts | 스크립트 파일을 위한 디렉터리 |
| data | 데이터 파일을 위한 디렉터리 |
get_path()
이 함수는 지정한 경로 이름에 해당하는 설치 경로를, 명시된 설치 스킴 기준으로 반환합니다.
>>> sysconfig.get_path('include')
'E:\\python37\\Include'get_platform()
이 함수는 현재 실행 중인 플랫폼을 식별할 수 있는 문자열을 반환합니다.
>>> sysconfig.get_platform() 'win-amd64'
get_python_version()
이 함수는 MAJOR.MINOR 형식의 Python 버전 번호를 문자열로 반환합니다.
-m 옵션으로 구성 정보 한눈에 보기
구성 변수와 그 값들은 sysconfig 모듈을 -m 옵션과 함께 실행해서도 확인할 수 있습니다. 이 방법은 설치된 환경 전체를 빠르게 점검하고자 할 때 특히 편리합니다.
E:\python37>python -m sysconfig
Platform: "win-amd64"
Python version: "3.7"
Current installation scheme: "nt"
Paths:
data = "E:\python37"
include = "E:\python37\Include"
platinclude = "E:\python37\Include"
platlib = "E:\python37\Lib\site-packages"
platstdlib = "E:\python37\Lib"
purelib = "E:\python37\Lib\site-packages"
scripts = "E:\python37\Scripts"
stdlib = "E:\python37\Lib"
Variables:
BINDIR = "E:\python37"
BINLIBDEST = "E:\python37\Lib"
EXE = ".exe"
EXT_SUFFIX = ".pyd"
INCLUDEPY = "E:\python37\Include"
LIBDEST = "E:\python37\Lib"
SO = ".pyd"
VERSION = "37"
abiflags = ""
base = "E:\python37"
exec_prefix = "E:\python37"
installed_base = "E:\python37"
installed_platbase = "E:\python37"
platbase = "E:\python37"
prefix = "E:\python37"
projectbase = "E:\python37"
py_version = "3.7.2"
py_version_nodot = "37"
py_version_short = "3.7"
srcdir = "E:\python37"
userbase = "C:\Users\acer\AppData\Roaming\Python"이처럼 sysconfig 모듈을 활용하면 Python 설치 환경의 경로와 버전, 플랫폼 정보 등을 프로그래밍 방식 또는 명령줄에서 간편하게 파악할 수 있습니다. 패키지 배포 스크립트 작성이나 빌드 환경 설정 시 매우 유용하게 활용됩니다.