Skip to content

Python:distutils

Python distutils module

Find Python libraries

from distutils.sysconfig import get_python_inc
print(get_python_inc())

import distutils.sysconfig as sysconfig
print(sysconfig.get_config_var('LIBDIR'))
print(sysconfig.get_config_var('LDLIBRARY'))

# Library path:
import os
print(os.path.join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))

## NumPy
import numpy as np
np.get_include()

스크립트와 통합하고 싶을 경우 아래와 같이 사용할 수 있다.

$ python -c "import distutils.sysconfig as sc; print(sc.get_config_var('LIBDIR'));"

참고로, 버전정보는 아래와 같다.

import platform
print(platform.python_version())

Remove debug symbol

from distutils import sysconfig
from distutils.core import setup
import platform

if platform.system() != 'Windows':  # When compilinig con visual no -g is added to params
    cflags = sysconfig.get_config_var('CFLAGS')
    opt = sysconfig.get_config_var('OPT')
    sysconfig._config_vars['CFLAGS'] = cflags.replace(' -g ', ' ')
    sysconfig._config_vars['OPT'] = opt.replace(' -g ', ' ')

if platform.system() == 'Linux':  # In macos there seems not to be -g in LDSHARED
    ldshared = sysconfig.get_config_var('LDSHARED')
    sysconfig._config_vars['LDSHARED'] = ldshared.replace(' -g ', ' ')

setup(...)

Add CFLAGS

from distutils import sysconfig
from distutils.core import setup

cflags = sysconfig.get_config_var('CFLAGS')
cflags += ' -march=native '
sysconfig._config_vars['CFLAGS'] = cflags

setup(...)

base directory

>>> import sysconfig
>>> sysconfig.get_config_var('base')
'/Users/your/.pyenv/versions/3.6.1/envs/opy-your-3.6.1'

Using sysconfig as a script

You can use sysconfig as a script with Python’s -m option:

$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"

Paths:
        data = "/usr/local"
        include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
        platinclude = "."
        platlib = "/usr/local/lib/python3.2/site-packages"
        platstdlib = "/usr/local/lib/python3.2"
        purelib = "/usr/local/lib/python3.2/site-packages"
        scripts = "/usr/local/bin"
        stdlib = "/usr/local/lib/python3.2"

Variables:
        AC_APPLE_UNIVERSAL_BUILD = "0"
        AIX_GENUINE_CPLUSPLUS = "0"
        AR = "ar"
        ARFLAGS = "rc"
        ...

See also

Favorite site