# `sysconfig` — Provide access to Python’s configuration information

Нове в версії 3.2.

Source code: Lib/sysconfig.py

Модуль `sysconfig` надає доступ до конфігураційної інформації Python, наприклад до списку шляхів інсталяції та змінних конфігурації, що стосуються поточної платформи.

## Конфігураційні змінні

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

`sysconfig` поміщає всі змінні, знайдені в цих файлах, у словник, до якого можна отримати доступ за допомогою `get_config_vars()` або `get_config_var()`.

Зверніть увагу, що в Windows це набагато менший набір.

`sysconfig.``get_config_vars`(*args)

  Без аргументів повертає словник усіх змінних конфігурації, що стосуються поточної платформи.

  За допомогою аргументів повертає список значень, які є результатом пошуку кожного аргументу в словнику змінних конфігурації.

  Для кожного аргументу, якщо значення не знайдено, поверніть `None`.

`sysconfig.``get_config_var`(name)

  Повертає значення однієї змінної name. Еквівалент `get_config_vars().get(name)`.

  Якщо ім’я не знайдено, поверніть `None`.

Приклад використання:

    >>> 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++']

## Шляхи встановлення

Python uses an installation scheme that differs depending on the platform and on the installation options. These schemes are stored in `sysconfig` under unique identifiers based on the value returned by `os.name`.

Every new component that is installed using `distutils` or a Distutils-based system will follow the same scheme to copy its file in the right places.

Python currently supports six schemes:

- posix_prefix: схема для платформ POSIX, таких як Linux або macOS. Це типова схема, яка використовується, коли встановлено Python або компонент.

- posix_home: scheme for POSIX platforms used when a home option is used upon installation. This scheme is used when a component is installed through Distutils with a specific home prefix.

- posix_user: scheme for POSIX platforms used when a component is installed through Distutils and the user option is used. This scheme defines paths located under the user home directory.

- nt: scheme for NT platforms like Windows.

- nt_user: scheme for NT platforms, when the user option is used.

- osx_framework_user: схема для macOS, коли використовується параметр user.

Кожна схема сама по собі складається з серії шляхів, і кожен шлях має унікальний ідентифікатор. Зараз Python використовує вісім шляхів:

- stdlib: каталог, що містить файли стандартної бібліотеки Python, які не залежать від платформи.

- platstdlib: каталог, що містить файли стандартної бібліотеки Python, які залежать від платформи.

- platlib: каталог для файлів, що стосуються сайту та платформи.

- purelib: directory for site-specific, non-platform-specific files.

- include: directory for non-platform-specific header files.

- platinclude: directory for platform-specific header files.

- scripts: каталог для файлів сценаріїв.

- data: каталог для файлів даних.

`sysconfig` provides some functions to determine these paths.

`sysconfig.``get_scheme_names`()

  Повертає кортеж, що містить усі схеми, які наразі підтримуються в `sysconfig`.

`sysconfig.``get_default_scheme`()

  Повернути назву схеми за замовчуванням для поточної платформи.

  Нове в версії 3.10: Ця функція раніше називалася `_get_default_scheme()` і вважалася деталлю реалізації.

`sysconfig.``get_preferred_scheme`(key)

  Повертає бажану назву схеми для макета встановлення, визначеного ключом.

  key має бути `"prefix"`, `"home"` або `"user"`.

  Поверненим значенням є назва схеми, указана в `get_scheme_names()`. Його можна передати до функцій `sysconfig`, які приймають аргумент scheme, наприклад `get_paths()`.

  Нове в версії 3.10.

`sysconfig.``_get_preferred_schemes`()

  Повертає dict, що містить бажані назви схем на поточній платформі. Розробники та розповсюджувачі Python можуть додати бажані схеми до глобального значення рівня модуля `_INSTALL_SCHEMES` і змінити цю функцію, щоб повернути ці назви схем, наприклад. забезпечують різні схеми для використання системними та мовними менеджерами пакунків, тому пакунки, встановлені одним із них, не змішуються з пакетами іншого.

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

  Нове в версії 3.10.

`sysconfig.``get_path_names`()

  Повертає кортеж, що містить усі назви шляхів, які зараз підтримуються в `sysconfig`.

`sysconfig.``get_path`(name[, scheme[, vars[, expand]]])

  Повертає шлях встановлення, що відповідає шляху ім’я зі схеми встановлення під назвою схема.

  name має бути значенням зі списку, який повертає `get_path_names()`.

  `sysconfig` зберігає шляхи встановлення, що відповідають кожному імені шляху, для кожної платформи, зі змінними, які можна розширити. Наприклад, шлях stdlib для схеми nt такий: `{base}/Lib`.

  `get_path()` використовуватиме змінні, які повертає `get_config_vars()`, щоб розширити шлях. Усі змінні мають значення за замовчуванням для кожної платформи, тому можна викликати цю функцію та отримати значення за замовчуванням.

  Якщо вказано схему, це має бути значення зі списку, який повертає `get_scheme_names()`. В іншому випадку використовується схема за замовчуванням для поточної платформи.

  If vars is provided, it must be a dictionary of variables that will update the dictionary return by `get_config_vars()`.

  Якщо expand має значення `False`, шлях не буде розгортатися за допомогою змінних.

  Якщо name не знайдено, викликайте `KeyError`.

`sysconfig.``get_paths`([scheme[, vars[, expand]]])

  Повертає словник, що містить усі шляхи встановлення, що відповідають схемі встановлення. Дивіться `get_path()` для отримання додаткової інформації.

  Якщо схема не вказана, використовуватиметься схема за замовчуванням для поточної платформи.

  Якщо надано vars, це має бути словник змінних, який оновлюватиме словник, що використовується для розширення шляхів.

  Якщо expand має значення false, шляхи не розгортатимуться.

  Якщо scheme не є існуючою схемою, `get_paths()` викличе `KeyError`.

## Інші функції

`sysconfig.``get_python_version`()

  Повертає `MAJOR.MINOR` номер версії Python у вигляді рядка. Подібно до `'%d.%d' % sys.version_info[:2]`.

`sysconfig.``get_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.

  Приклади повернених значень:

  - linux-i586

  - linux-alpha (?)

  - solaris-2.6-sun4u

  Windows поверне одне з:

  - win-amd64 (64bit Windows on AMD64, aka x86_64, Intel64, and EM64T)

  - win32 (усі інші - зокрема повертається sys.platform)

  macOS може повертати:

  - macosx-10.6-ppc

  - macosx-10.4-ppc64

  - macosx-10.3-i386

  - macosx-10.4-жир

  Для інших платформ, відмінних від POSIX, наразі повертає лише `sys.platform`.

`sysconfig.``is_python_build`()

  Повертає `True`, якщо запущений інтерпретатор Python був зібраний із вихідного коду та запускається зі свого зібраного розташування, а не з розташування, яке є результатом, наприклад, запуск `make install` або встановлення через бінарний інсталятор.

`sysconfig.``parse_config_h`(fp[, vars])

  Проаналізуйте файл у стилі `config.h`.

  fp — це файлоподібний об’єкт, що вказує на `config.h`подібний файл.

  Повертається словник, що містить пари ім’я/значення. Якщо додатковий словник передається як другий аргумент, він використовується замість нового словника та оновлюється значеннями, зчитаними у файлі.

`sysconfig.``get_config_h_filename`()

  Повертає шлях до `pyconfig.h`.

`sysconfig.``get_makefile_filename`()

  Повертає шлях до `Makefile`.

## Використання `sysconfig` як сценарію

Ви можете використовувати `sysconfig` як сценарій з опцією Python -m:

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

Цей виклик виводить у стандартний вихід інформацію, яку повертають `get_platform()`, `get_python_version()`, `get_path()` і `get_config_vars()`.