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

Python sysconfig 모듈로 설치 구성 정보 조회하기

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_prefixLinux, Mac OS X 등 POSIX 계열 플랫폼용 기본 스킴
posix_homePOSIX 플랫폼에서 home 옵션을 지정하여 설치할 때 사용되는 스킴
posix_userPOSIX 플랫폼에서 Distutils를 통해 컴포넌트를 설치하고 user 옵션을 사용할 때 적용되는 스킴
ntWindows 등 NT 계열 플랫폼용 기본 스킴
nt_userNT 플랫폼에서 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 설치 환경의 경로와 버전, 플랫폼 정보 등을 프로그래밍 방식 또는 명령줄에서 간편하게 파악할 수 있습니다. 패키지 배포 스크립트 작성이나 빌드 환경 설정 시 매우 유용하게 활용됩니다.