:mod:`sysconfig` --- Provide access to Python's configuration information
=========================================================================

.. module:: sysconfig
   :synopsis: Python's configuration information

.. moduleauthor:: Tarek Ziadé <tarek@ziade.org>
.. sectionauthor:: Tarek Ziadé <tarek@ziade.org>

.. versionadded:: 3.2

**Source code:** :source:`Lib/sysconfig.py`

.. index::
   single: configuration information

--------------

The :mod:`sysconfig` module provides access to Python's configuration
information like the list of installation paths and the configuration variables
relevant for the current platform.


Configuration variables
-----------------------

A Python distribution contains a :file:`Makefile` and a :file:`pyconfig.h`
header file that are necessary to build both the Python binary itself and
third-party C extensions compiled using ``setuptools``.

:mod:`sysconfig` puts all variables found in these files in a dictionary that
can be accessed using :func:`get_config_vars` or :func:`get_config_var`.

Notice that on Windows, it's a much smaller set.

.. function:: get_config_vars(*args)

   With no arguments, return a dictionary of all configuration variables
   relevant for the current platform.

   With arguments, return a list of values that result from looking up each
   argument in the configuration variable dictionary.

   For each argument, if the value is not found, return ``None``.


.. function:: get_config_var(name)

   Return the value of a single variable *name*. Equivalent to
   ``get_config_vars().get(name)``.

   If *name* is not found, return ``None``.

Example of usage::

   >>> import sysconfig
   >>> sysconfig.get_config_var('Py_ENABLE_SHARED')
   0
   >>> sysconfig.get_config_var('LIBDIR')
   '/usr/local/lib'
   >>> sysconfig.get_config_vars('AR', 'CXX')
   ['ar', 'g++']


.. _installation_paths:

Installation paths
------------------

Python uses an installation scheme that differs depending on the platform and on
the installation options.  These schemes are stored in :mod:`sysconfig` under
unique identifiers based on the value returned by :const:`os.name`.
The schemes are used by package installers to determine where to copy files to.

Python currently supports nine schemes:

- *posix_prefix*: scheme for POSIX platforms like Linux or macOS.  This is
  the default scheme used when Python or a component is installed.
- *posix_home*: scheme for POSIX platforms, when the *home* option is used.
  This scheme defines paths located under a specific home prefix.
- *posix_user*: scheme for POSIX platforms, when the *user* option is used.
  This scheme defines paths located under the user's home directory
  (:const:`site.USER_BASE`).
- *posix_venv*: scheme for :mod:`Python virtual environments <venv>` on POSIX
  platforms; by default it is the same as *posix_prefix*.
- *nt*: scheme for Windows.
  This is the default scheme used when Python or a component is installed.
- *nt_user*: scheme for Windows, when the *user* option is used.
- *nt_venv*: scheme for :mod:`Python virtual environments <venv>` on Windows;
  by default it is the same as *nt*.
- *venv*: a scheme with values from either *posix_venv* or *nt_venv* depending
  on the platform Python runs on.
- *osx_framework_user*: scheme for macOS, when the *user* option is used.

Each scheme is itself composed of a series of paths and each path has a unique
identifier.  Python currently uses eight paths:

- *stdlib*: directory containing the standard Python library files that are not
  platform-specific.
- *platstdlib*: directory containing the standard Python library files that are
  platform-specific.
- *platlib*: directory for site-specific, platform-specific files.
- *purelib*: directory for site-specific, non-platform-specific files ('pure' Python).
- *include*: directory for non-platform-specific header files for
  the Python C-API.
- *platinclude*: directory for platform-specific header files for
  the Python C-API.
- *scripts*: directory for script files.
- *data*: directory for data files.


.. _sysconfig-user-scheme:

User scheme
---------------

This scheme is designed to be the most convenient solution for users that don't
have write permission to the global site-packages directory or don't want to
install into it.

Files will be installed into subdirectories of :const:`site.USER_BASE` (written
as :file:`{userbase}` hereafter).  This scheme installs pure Python modules and
extension modules in the same location (also known as :const:`site.USER_SITE`).

``posix_user``
^^^^^^^^^^^^^^

============== ===========================================================
Path           Installation directory
============== ===========================================================
*stdlib*       :file:`{userbase}/lib/python{X.Y}`
*platstdlib*   :file:`{userbase}/lib/python{X.Y}`
*platlib*      :file:`{userbase}/lib/python{X.Y}/site-packages`
*purelib*      :file:`{userbase}/lib/python{X.Y}/site-packages`
*include*      :file:`{userbase}/include/python{X.Y}`
*scripts*      :file:`{userbase}/bin`
*data*         :file:`{userbase}`
============== ===========================================================

``nt_user``
^^^^^^^^^^^

============== ===========================================================
Path           Installation directory
============== ===========================================================
*stdlib*       :file:`{userbase}\\Python{XY}`
*platstdlib*   :file:`{userbase}\\Python{XY}`
*platlib*      :file:`{userbase}\\Python{XY}\\site-packages`
*purelib*      :file:`{userbase}\\Python{XY}\\site-packages`
*include*      :file:`{userbase}\\Python{XY}\\Include`
*scripts*      :file:`{userbase}\\Python{XY}\\Scripts`
*data*         :file:`{userbase}`
============== ===========================================================

``osx_framework_user``
^^^^^^^^^^^^^^^^^^^^^^

============== ===========================================================
Path           Installation directory
============== ===========================================================
*stdlib*       :file:`{userbase}/lib/python`
*platstdlib*   :file:`{userbase}/lib/python`
*platlib*      :file:`{userbase}/lib/python/site-packages`
*purelib*      :file:`{userbase}/lib/python/site-packages`
*include*      :file:`{userbase}/include/python{X.Y}`
*scripts*      :file:`{userbase}/bin`
*data*         :file:`{userbase}`
============== ===========================================================


.. _sysconfig-home-scheme:

Home scheme
-----------

The idea behind the "home scheme" is that you build and maintain a personal
stash of Python modules.  This scheme's name is derived from the idea of a
"home" directory on Unix, since it's not unusual for a Unix user to make their
home directory have a layout similar to :file:`/usr/` or :file:`/usr/local/`.
This scheme can be used by anyone, regardless of the operating system they
are installing for.

``posix_home``
^^^^^^^^^^^^^^

============== ===========================================================
Path           Installation directory
============== ===========================================================
*stdlib*       :file:`{home}/lib/python`
*platstdlib*   :file:`{home}/lib/python`
*platlib*      :file:`{home}/lib/python`
*purelib*      :file:`{home}/lib/python`
*include*      :file:`{home}/include/python`
*platinclude*  :file:`{home}/include/python`
*scripts*      :file:`{home}/bin`
*data*         :file:`{home}`
============== ===========================================================


.. _sysconfig-prefix-scheme:

Prefix scheme
-------------

The "prefix scheme" is useful when you wish to use one Python installation to
perform the build/install (i.e., to run the setup script), but install modules
into the third-party module directory of a different Python installation (or
something that looks like a different Python installation).  If this sounds a
trifle unusual, it is---that's why the user and home schemes come before.  However,
there are at least two known cases where the prefix scheme will be useful.

First, consider that many Linux distributions put Python in :file:`/usr`, rather
than the more traditional :file:`/usr/local`.  This is entirely appropriate,
since in those cases Python is part of "the system" rather than a local add-on.
However, if you are installing Python modules from source, you probably want
them to go in :file:`/usr/local/lib/python2.{X}` rather than
:file:`/usr/lib/python2.{X}`.

Another possibility is a network filesystem where the name used to write to a
remote directory is different from the name used to read it: for example, the
Python interpreter accessed as :file:`/usr/local/bin/python` might search for
modules in :file:`/usr/local/lib/python2.{X}`, but those modules would have to
be installed to, say, :file:`/mnt/{@server}/export/lib/python2.{X}`.

``posix_prefix``
^^^^^^^^^^^^^^^^

============== ==========================================================
Path           Installation directory
============== ==========================================================
*stdlib*       :file:`{prefix}/lib/python{X.Y}`
*platstdlib*   :file:`{prefix}/lib/python{X.Y}`
*platlib*      :file:`{prefix}/lib/python{X.Y}/site-packages`
*purelib*      :file:`{prefix}/lib/python{X.Y}/site-packages`
*include*      :file:`{prefix}/include/python{X.Y}`
*platinclude*  :file:`{prefix}/include/python{X.Y}`
*scripts*      :file:`{prefix}/bin`
*data*         :file:`{prefix}`
============== ==========================================================

``nt``
^^^^^^

============== ==========================================================
Path           Installation directory
============== ==========================================================
*stdlib*       :file:`{prefix}\\Lib`
*platstdlib*   :file:`{prefix}\\Lib`
*platlib*      :file:`{prefix}\\Lib\\site-packages`
*purelib*      :file:`{prefix}\\Lib\\site-packages`
*include*      :file:`{prefix}\\Include`
*platinclude*  :file:`{prefix}\\Include`
*scripts*      :file:`{prefix}\\Scripts`
*data*         :file:`{prefix}`
============== ==========================================================


Installation path functions
---------------------------

:mod:`sysconfig` provides some functions to determine these installation paths.

.. function:: get_scheme_names()

   Return a tuple containing all schemes currently supported in
   :mod:`sysconfig`.


.. function:: get_default_scheme()

   Return the default scheme name for the current platform.

   .. versionadded:: 3.10
      This function was previously named ``_get_default_scheme()`` and
      considered an implementation detail.

   .. versionchanged:: 3.11
      When Python runs from a virtual environment,
      the *venv* scheme is returned.

.. function:: get_preferred_scheme(key)

   Return a preferred scheme name for an installation layout specified by *key*.

   *key* must be either ``"prefix"``, ``"home"``, or ``"user"``.

   The return value is a scheme name listed in :func:`get_scheme_names`. It
   can be passed to :mod:`sysconfig` functions that take a *scheme* argument,
   such as :func:`get_paths`.

   .. versionadded:: 3.10

   .. versionchanged:: 3.11
      When Python runs from a virtual environment and ``key="prefix"``,
      the *venv* scheme is returned.


.. function:: _get_preferred_schemes()

   Return a dict containing preferred scheme names on the current platform.
   Python implementers and redistributors may add their preferred schemes to
   the ``_INSTALL_SCHEMES`` module-level global value, and modify this function
   to return those scheme names, to e.g. provide different schemes for system
   and language package managers to use, so packages installed by either do not
   mix with those by the other.

   End users should not use this function, but :func:`get_default_scheme` and
   :func:`get_preferred_scheme()` instead.

   .. versionadded:: 3.10


.. function:: get_path_names()

   Return a tuple containing all path names currently supported in
   :mod:`sysconfig`.


.. function:: get_path(name, [scheme, [vars, [expand]]])

   Return an installation path corresponding to the path *name*, from the
   install scheme named *scheme*.

   *name* has to be a value from the list returned by :func:`get_path_names`.

   :mod:`sysconfig` stores installation paths corresponding to each path name,
   for each platform, with variables to be expanded.  For instance the *stdlib*
   path for the *nt* scheme is: ``{base}/Lib``.

   :func:`get_path` will use the variables returned by :func:`get_config_vars`
   to expand the path.  All variables have default values for each platform so
   one may call this function and get the default value.

   If *scheme* is provided, it must be a value from the list returned by
   :func:`get_scheme_names`.  Otherwise, the default scheme for the current
   platform is used.

   If *vars* is provided, it must be a dictionary of variables that will update
   the dictionary returned by :func:`get_config_vars`.

   If *expand* is set to ``False``, the path will not be expanded using the
   variables.

   If *name* is not found, raise a :exc:`KeyError`.


.. function:: get_paths([scheme, [vars, [expand]]])

   Return a dictionary containing all installation paths corresponding to an
   installation scheme. See :func:`get_path` for more information.

   If *scheme* is not provided, will use the default scheme for the current
   platform.

   If *vars* is provided, it must be a dictionary of variables that will
   update the dictionary used to expand the paths.

   If *expand* is set to false, the paths will not be expanded.

   If *scheme* is not an existing scheme, :func:`get_paths` will raise a
   :exc:`KeyError`.


Other functions
---------------

.. function:: get_python_version()

   Return the ``MAJOR.MINOR`` Python version number as a string.  Similar to
   ``'%d.%d' % sys.version_info[:2]``.


.. function:: get_platform()

   Return a string that identifies the current platform.

   This is used mainly to distinguish platform-specific build directories and
   platform-specific built distributions.  Typically includes the OS name and
   version and the architecture (as supplied by 'os.uname()'), although the
   exact information included depends on the OS; e.g., on Linux, the kernel
   version isn't particularly important.

   Examples of returned values:

   - linux-i586
   - linux-alpha (?)
   - solaris-2.6-sun4u

   Windows will return one of:

   - win-amd64 (64bit Windows on AMD64, aka x86_64, Intel64, and EM64T)
   - win32 (all others - specifically, sys.platform is returned)

   macOS can return:

   - macosx-10.6-ppc
   - macosx-10.4-ppc64
   - macosx-10.3-i386
   - macosx-10.4-fat

   For other non-POSIX platforms, currently just returns :data:`sys.platform`.


.. function:: is_python_build()

   Return ``True`` if the running Python interpreter was built from source and
   is being run from its built location, and not from a location resulting from
   e.g. running ``make install`` or installing via a binary installer.


.. function:: parse_config_h(fp[, vars])

   Parse a :file:`config.h`\-style file.

   *fp* is a file-like object pointing to the :file:`config.h`\-like file.

   A dictionary containing name/value pairs is returned.  If an optional
   dictionary is passed in as the second argument, it is used instead of a new
   dictionary, and updated with the values read in the file.


.. function:: get_config_h_filename()

   Return the path of :file:`pyconfig.h`.

.. function:: get_makefile_filename()

   Return the path of :file:`Makefile`.

.. _sysconfig-cli:

Using :mod:`sysconfig` as a script
----------------------------------

You can use :mod:`sysconfig` as a script with Python's *-m* option:

.. code-block:: shell-session

    $ 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"
            ...

This call will print in the standard output the information returned by
:func:`get_platform`, :func:`get_python_version`, :func:`get_path` and
:func:`get_config_vars`.
