sysconfig vs distutils.sysconfig

After installing CPython, two sysconfig modules are available:

  • sysconfig
  • distutils.sysconfig

A difference is the value associated with the EXT_SUFFIX and SO configuration variables.

    Linux macOS Windows
    CPython 2.7
SO sysconfig .so .so .pyd
EXT_SUFFIX sysconfig None None None
    CPython >= 3.5
SO sysconfig .pyd
distutils.sysconfig .cp37-win_amd64.pyd
EXT_SUFFIX sysconfig .pyd
distutils.sysconfig .cp37-win_amd64.pyd


The EXT_SUFFIX was introduced in Python 3.4 and is functionally equivalent to SO configuration variable. The SO configuration variable has been deprecated since Python 3.4.


The information reported in the table have been collected execution the following python snippet.

def display_ext_suffix_config_var():
    import platform
    import sys
    import sysconfig
    from distutils import sysconfig as du_sysconfig
    details = (platform.python_implementation(),) + sys.version_info[:3]
    print("%s %s.%s.%s" % details)
    print(" SO")
    print("  sysconfig           : %s" % sysconfig.get_config_var('SO'))
    print("  distutils.sysconfig : %s" % du_sysconfig.get_config_var('SO'))
    print(" EXT_SUFFIX")
    print("  sysconfig           : %s" % sysconfig.get_config_var('EXT_SUFFIX'))
    print("  distutils.sysconfig : %s" % du_sysconfig.get_config_var('EXT_SUFFIX'))