Spec-Zone.ru › Python 3.13

sysconfig — доступ к сведениям о конфигурации Python

Добавлено в версии 3.2.

Исходный код: Lib/sysconfig

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

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

Дистрибутив Python содержит файлы заголовков Makefile и pyconfig.h, необходимые для сборки самого исполняемого файла Python, а также сторонних расширений C, скомпилированных с помощью setuptools.

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).

Если 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 используются схемы установки, различающиеся в зависимости от платформы и параметров установки. Эти схемы хранятся в sysconfig под уникальными идентификаторами, основанными на значении, возвращаемом os.name. Схемы используются установщиками пакетов для определения места копирования файлов.

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

  • posix_prefix: схема для POSIX-платформ, таких как Linux или macOS. Это схема по умолчанию, используемая при установке Python или его компонента.
  • posix_home: схема для POSIX-платформ, когда используется параметр home. Эта схема определяет пути внутри заданного префикса домашнего каталога.
  • posix_user: схема для POSIX-платформ, когда используется параметр user. Эта схема определяет пути внутри домашнего каталога пользователя (site.USER_BASE).
  • posix_venv: схема для Python virtual environments на POSIX-платформах; по умолчанию она совпадает с posix_prefix.
  • nt: схема для Windows. Это схема по умолчанию, используемая при установке Python или его компонента.
  • nt_user: схема для Windows, когда используется параметр user.
  • nt_venv: схема для Python virtual environments в Windows; по умолчанию она совпадает с nt.
  • venv: схема со значениями из posix_venv или nt_venv в зависимости от платформы, на которой выполняется Python.
  • osx_framework_user: схема для macOS, когда используется параметр user.

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

  • stdlib: каталог со стандартными файлами библиотеки Python, не зависящими от платформы.
  • platstdlib: каталог со стандартными файлами библиотеки Python, зависящими от платформы.
  • platlib: каталог для файлов, относящихся к конкретному сайту и платформе.
  • purelib: каталог для файлов, относящихся к конкретному сайту, но не зависящих от платформы («чистый» Python).
  • include: каталог с файлами заголовков Python C-API, не зависящими от платформы.
  • platinclude: каталог с файлами заголовков Python C-API, зависящими от платформы.
  • scripts: каталог с файлами сценариев.
  • data: каталог с файлами данных.

Пользовательская схема

Эта схема создана как наиболее удобное решение для пользователей, у которых нет прав на запись в глобальный каталог site-packages или которые не хотят устанавливать файлы в него.

Файлы будут устанавливаться в подкаталоги site.USER_BASE (далее — userbase). Эта схема устанавливает модули Python и модули расширений в одно и то же место (также известное как site.USER_SITE).

posix_user

Путь

Каталог установки

stdlib

userbase/lib/pythonX.Y

platstdlib

userbase/lib/pythonX.Y

platlib

userbase/lib/pythonX.Y/site-packages

purelib

userbase/lib/pythonX.Y/site-packages

include

userbase/include/pythonX.Y

scripts

userbase/bin

data

userbase

nt_user

Путь

Каталог установки

stdlib

userbase\PythonXY

platstdlib

userbase\PythonXY

platlib

userbase\PythonXY\site-packages

purelib

userbase\PythonXY\site-packages

include

userbase\PythonXY\Include

scripts

userbase\PythonXY\Scripts

data

userbase

osx_framework_user

Путь

Каталог установки

stdlib

userbase/lib/python

platstdlib

userbase/lib/python

platlib

userbase/lib/python/site-packages

purelib

userbase/lib/python/site-packages

include

userbase/include/pythonX.Y

scripts

userbase/bin

data

userbase

Схема home

Идея «схемы home» заключается в том, чтобы собрать и поддерживать собственный набор модулей Python. Название этой схемы происходит от идеи каталога «home» в Unix, поскольку пользователи Unix нередко создают в своих домашних каталогах структуру, подобную /usr/ или /usr/local/. Эту схему можно использовать независимо от операционной системы, для которой выполняется установка.

posix_home

Путь

Каталог установки

stdlib

home/lib/python

platstdlib

home/lib/python

platlib

home/lib/python

purelib

home/lib/python

include

home/include/python

platinclude

home/include/python

scripts

home/bin

data

home

Схема prefix

«Схема prefix» полезна, если вы хотите использовать одну установку Python для сборки и установки (то есть для запуска сценария настройки), но устанавливать модули в каталог сторонних модулей другой установки Python (или чего-то, что выглядит как другая установка Python). Если это кажется немного необычным, так оно и есть — поэтому перед ней описаны пользовательская схема и схема home. Однако известно по меньшей мере два случая, когда схема prefix может быть полезна.

Во-первых, учтите, что многие дистрибутивы Linux устанавливают Python в /usr, а не в более традиционный каталог /usr/local. Это вполне уместно, поскольку в таких случаях Python является частью «системы», а не локальным дополнением. Однако при установке модулей Python из исходного кода вы, вероятно, захотите поместить их в /usr/local/lib/python2.X, а не в /usr/lib/python2.X.

Другой возможный случай — сетевая файловая система, где имя, используемое для записи в удалённый каталог, отличается от имени, используемого для чтения из него: например, интерпретатор Python, доступный как /usr/local/bin/python, может искать модули в /usr/local/lib/python2.X, но устанавливать эти модули нужно, например, в /mnt/@server/export/lib/python2.X.

posix_prefix

Путь

Каталог установки

stdlib

prefix/lib/pythonX.Y

platstdlib

prefix/lib/pythonX.Y

platlib

prefix/lib/pythonX.Y/site-packages

purelib

prefix/lib/pythonX.Y/site-packages

include

prefix/include/pythonX.Y

platinclude

prefix/include/pythonX.Y

scripts

prefix/bin

data

prefix

nt

Путь

Каталог установки

stdlib

prefix\Lib

platstdlib

prefix\Lib

platlib

prefix\Lib\site-packages

purelib

prefix\Lib\site-packages

include

prefix\Include

platinclude

prefix\Include

scripts

prefix\Scripts

data

prefix

Функции для работы с путями установки

sysconfig предоставляет несколько функций для определения этих путей установки.

sysconfig.get_scheme_names()

Возвращает кортеж со всеми схемами, поддерживаемыми в настоящее время в sysconfig.

sysconfig.get_default_scheme()

Возвращает имя схемы по умолчанию для текущей платформы.

Добавлено в версии 3.10: Ранее эта функция называлась _get_default_scheme() и считалась деталью реализации.

Изменено в версии 3.11: Если Python запускается в виртуальном окружении, возвращается схема venv.

sysconfig.get_preferred_scheme(key)

Возвращает предпочтительное имя схемы для расположения установки, заданного параметром key.

key должен иметь значение "prefix", "home" или "user".

Возвращаемое значение — имя схемы из списка get_scheme_names(). Его можно передать функциям sysconfig, принимающим аргумент scheme, например get_paths().

Добавлено в версии 3.10.

Изменено в версии 3.11: Если Python запускается в виртуальном окружении и key="prefix", возвращается схема venv.

sysconfig._get_preferred_schemes()

Возвращает словарь с предпочтительными именами схем для текущей платформы. Разработчики и распространители Python могут добавить предпочтительные схемы в глобальное значение _INSTALL_SCHEMES на уровне модуля и изменить эту функцию так, чтобы она возвращала эти имена схем. Например, это позволяет предоставлять разные схемы для системных менеджеров пакетов и менеджеров пакетов языков, чтобы пакеты, установленные каждым из них, не смешивались.

Конечным пользователям не следует использовать эту функцию; вместо неё используйте get_default_scheme() и get_preferred_scheme().

Добавлено в версии 3.10.

sysconfig.get_path_names()

Возвращает кортеж со всеми именами путей, поддерживаемыми в настоящее время в sysconfig.

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

Возвращает путь установки для пути с именем name из схемы установки с именем scheme.

name должно быть одним из значений списка, возвращаемого get_path_names().

sysconfig хранит пути установки для каждого имени пути и каждой платформы, а также переменные для подстановки. Например, путь stdlib для схемы nt имеет значение: {base}/Lib.

get_path() использует переменные, возвращаемые get_config_vars(), для подстановки в путь. Для каждой платформы все переменные имеют значения по умолчанию, поэтому эту функцию можно вызвать и получить значение по умолчанию.

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

Если указан vars, он должен быть словарём переменных, которые обновят словарь, возвращаемый get_config_vars().

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

Если name не найдено, вызывается исключение KeyError.

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

Возвращает словарь со всеми путями установки, соответствующими схеме установки. Дополнительные сведения см. в описании get_path().

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

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

Если для expand задано значение false, подстановка в пути не выполняется.

Если scheme не является существующей схемой, get_paths() вызовет исключение KeyError.

Другие функции

sysconfig.get_python_version()

Возвращает номер версии Python MAJOR.MINOR в виде строки. Аналогично '%d.%d' % sys.version_info[:2].

sysconfig.get_platform()

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

В основном используется для различения каталогов сборки и собранных дистрибутивов, зависящих от платформы. Обычно включает название и версию ОС, а также архитектуру (как указано в os.uname()), хотя точный состав сведений зависит от ОС; например, в Linux версия ядра не особенно важна.

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

Windows:

  • win-amd64 (64-разрядная Windows на AMD64, также известной как x86_64, Intel64 и EM64T)
  • win-arm64 (64-разрядная Windows на ARM64, также известной как AArch64)
  • win32 (все остальные варианты — в частности, возвращается sys.platform)

ОС на основе POSIX:

  • linux-x86_64
  • macosx-15.5-arm64
  • macosx-26.0-universal2 (macOS на Apple Silicon или Intel)
  • android-24-arm64_v8a

Для других платформ, не основанных на 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 можно использовать как сценарий с параметром 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().

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/sysconfig.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API