> **Источник:** https://python-all.ru/2.7/library/sysconfig.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 28.2. [`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) – предоставляет доступ к конфигурационной информации Python

Новое в версии 2.7.

**Исходный код:** [Lib/sysconfig.py](https://python-all.ru/src/2.7/Lib/sysconfig.py)

---

Модуль [`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) предоставляет доступ к конфигурационной информации Python, например к списку путей установки и переменным конфигурации, актуальным для текущей платформы.

## 28.2.1. Переменные конфигурации

Дистрибутив Python содержит файлы `Makefile` и `pyconfig.h`, необходимые для сборки как самого бинарного файла Python, так и сторонних C-расширений, скомпилированных с помощью [`distutils`](https://python-all.ru/2.7/library/distutils.html#module-distutils).

[`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) помещает все переменные из этих файлов в словарь, к которому можно обратиться с помощью [`get_config_vars()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_config_vars) или [`get_config_var()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_config_var).

Обратите внимание: в Windows этот набор значительно меньше.

#### `sysconfig.get_config_vars(*args)`

Без аргументов возвращает словарь всех переменных конфигурации, актуальных для текущей платформы.

С аргументами возвращает список значений, полученных в результате поиска каждого аргумента в словаре переменных конфигурации.

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

#### `sysconfig.get_config_var(name)`

Возвращает значение одной переменной *name*. Эквивалентно `get_config_vars().get(name)`.

Если *name* не найден, возвращается `None`.

Пример использования:

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

## 28.2.2. Пути установки

Python использует схему установки, которая различается в зависимости от платформы и параметров установки. Эти схемы хранятся в [`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) под уникальными идентификаторами, основанными на значении, возвращаемом [`os.name`](https://python-all.ru/2.7/library/os.html#os.name).

Каждый новый компонент, устанавливаемый с помощью [`distutils`](https://python-all.ru/2.7/library/distutils.html#module-distutils) или системы на основе Distutils, будет следовать той же схеме для копирования своих файлов в нужные места.

В настоящее время Python поддерживает семь схем:

- *posix\_prefix*: схема для платформ Posix, таких как Linux или Mac OS X. Это схема по умолчанию, используемая при установке Python или какого-либо компонента.
- *posix\_home*: схема для платформ Posix, используемая, когда при установке задан параметр *home*. Эта схема применяется, когда компонент устанавливается через Distutils с указанием определённого префикса home.
- *posix\_user*: схема для платформ Posix, используемая, когда компонент устанавливается через Distutils и указан параметр *user*. Эта схема определяет пути, расположенные в домашнем каталоге пользователя.
- *nt*: схема для платформ NT, таких как Windows.
- *nt\_user*: схема для платформ NT, когда используется опция *user*.
- *os2*: схема для платформ OS/2.
- *os2\_home*: схема для платформ OS/2, когда используется опция *user*.

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

- *stdlib*: каталог, содержащий файлы стандартной библиотеки Python, которые не зависят от платформы.
- *platstdlib*: каталог, содержащий файлы стандартной библиотеки Python, которые зависят от платформы.
- *platlib*: каталог для специфичных для сайта и платформы файлов.
- *purelib*: каталог для специфичных для сайта, не зависящих от платформы файлов.
- *include*: каталог для не зависящих от платформы заголовочных файлов.
- *platinclude*: каталог для зависящих от платформы заголовочных файлов.
- *scripts*: каталог для файлов скриптов.
- *data*: каталог для файлов данных.

[`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) предоставляет несколько функций для определения этих путей.

#### `sysconfig.get_scheme_names()`

Возвращает кортеж со всеми схемами, которые в настоящее время поддерживаются в [`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig).

#### `sysconfig.get_path_names()`

Возвращает кортеж со всеми именами путей, которые в настоящее время поддерживаются в [`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig).

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

Возвращает путь установки, соответствующий имени пути *name*, из схемы установки с именем *scheme*.

*name* должно быть значением из списка, возвращаемого [`get_path_names()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_path_names).

[`sysconfig`](https://python-all.ru/2.7/library/sysconfig.html#module-sysconfig) хранит пути установки, соответствующие каждому имени пути, для каждой платформы, с переменными, подлежащими раскрытию. Например, путь *stdlib* для схемы *nt*: `{base}/Lib`.

[`get_path()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_path) использует переменные, возвращаемые [`get_config_vars()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_config_vars), для раскрытия пути. Все переменные имеют значения по умолчанию для каждой платформы, поэтому можно вызвать эту функцию и получить значение по умолчанию.

Если указан *scheme*, это должно быть значение из списка, возвращаемого [`get_scheme_names()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_scheme_names). В противном случае используется схема по умолчанию для текущей платформы.

Если предоставлен *vars*, это должен быть словарь переменных, который обновит словарь, возвращаемый [`get_config_vars()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_config_vars).

Если *expand* установлен в `False`, путь не будет раскрыт с использованием переменных.

Если *name* не найден, возвращается `None`.

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

Возвращает словарь, содержащий все пути установки, соответствующие схеме установки. См. [`get_path()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_path) для получения дополнительной информации.

Если *scheme* не указан, будет использована схема по умолчанию для текущей платформы.

Если указан *vars*, это должен быть словарь переменных, который дополнит словарь, используемый для раскрытия путей.

Если *expand* установлен в false, пути не будут расширяться.

Если *scheme* не является существующей схемой, [`get_paths()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_paths) вызовет исключение [`KeyError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.KeyError).

## 28.2.3. Другие функции

#### `sysconfig.get_python_version()`

Возвращает номер версии Python `MAJOR.MINOR` в виде строки. Аналогично `sys.version[:3]`.

#### `sysconfig.get_platform()`

Возвращает строку, идентифицирующую текущую платформу.

В основном используется для различения платформозависимых каталогов сборки и платформозависимых собранных дистрибутивов. Обычно включает имя и версию ОС, а также архитектуру (как указано в [`os.uname()`](https://python-all.ru/2.7/library/os.html#os.uname)), хотя точный состав информации зависит от ОС; например, для IRIX архитектура не особенно важна (IRIX работает только на оборудовании SGI), а для Linux версия ядра не особенно важна.

Примеры возвращаемых значений:

- linux-i586
- linux-alpha (?)
- solaris-2.6-sun4u
- irix-5.3
- irix64-6.2

Windows вернёт одно из:

- win-amd64 (64-разрядная Windows на AMD64, также известная как x86\_64, Intel64 и EM64T)
- win-ia64 (64-разрядная Windows на Itanium)
- win32 (все остальные – фактически возвращается sys.platform)

Mac OS X может возвращать:

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

Для других платформ, не основанных на POSIX, в настоящее время просто возвращает [`sys.platform`](https://python-all.ru/2.7/library/sys.html#sys.platform).

#### `sysconfig.is_python_build()`

Возвращает `True`, если текущая установка Python была собрана из исходного кода.

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

Разобрать файл в стиле `config.h`.

*fp* – это файлоподобный объект, указывающий на файл, похожий на `config.h`.

Возвращается словарь, содержащий пары имя/значение. Если в качестве второго аргумента передан необязательный словарь, он используется вместо нового словаря и обновляется значениями, прочитанными из файла.

#### `sysconfig.get_config_h_filename()`

Возвращает путь к `pyconfig.h`.

#### `sysconfig.get_makefile_filename()`

Возвращает путь к `Makefile`.
