Содержание страницы
sysconfig – Предоставляет доступ к конфигурационной информации Python¶sysconfig – Provide access to Python’s configuration information
Новое в версии 3.2.
Исходный код: Lib/sysconfig.py
Модуль sysconfig предоставляет доступ к конфигурационной информации Python,
например к списку путей установки и переменным конфигурации,
актуальным для текущей платформы.
Переменные конфигурации¶Configuration variables
Дистрибутив Python содержит файлы Makefile и pyconfig.h,
необходимые для сборки как самого бинарного файла Python, так и
сторонних C-расширений, скомпилированных с помощью 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).Если 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++']
Пути установки¶Installation paths
Python использует схему установки, которая различается в зависимости от платформы и параметров установки. Эти схемы хранятся в sysconfig под уникальными идентификаторами, основанными на значении, возвращаемом os.name.
Каждый новый компонент, устанавливаемый с помощью distutils или системы на основе Distutils, будет следовать той же схеме для копирования своих файлов в нужные места.
Python в настоящее время поддерживает шесть схем:
posix_prefix: схема для POSIX-платформ, таких как Linux или macOS. Это схема по умолчанию, используемая при установке Python или компонента.
posix_home: схема для платформ POSIX, используемая при указании опции home при установке. Эта схема применяется, когда компонент устанавливается через Distutils с определённым префиксом home.
posix_user: схема для платформ POSIX, используемая при установке компонента через Distutils с опцией user. Эта схема определяет пути, расположенные в домашнем каталоге пользователя.
nt: схема для платформ NT, таких как Windows.
nt_user: схема для платформ NT, когда используется опция user.
osx_framework_user: схема для macOS, когда используется опция user.
Каждая схема состоит из набора путей, и каждый путь имеет уникальный идентификатор. Python в настоящее время использует восемь путей:
stdlib: каталог, содержащий файлы стандартной библиотеки Python, которые не зависят от платформы.
platstdlib: каталог, содержащий файлы стандартной библиотеки Python, которые зависят от платформы.
platlib: каталог для специфичных для сайта и платформы файлов.
purelib: каталог для специфичных для сайта, не зависящих от платформы файлов.
include: каталог для не зависящих от платформы заголовочных файлов.
platinclude: каталог для зависящих от платформы заголовочных файлов.
scripts: каталог для файлов скриптов.
data: каталог для файлов данных.
sysconfig предоставляет несколько функций для определения этих путей.
-
sysconfig.get_scheme_names()¶ Возвращает кортеж со всеми схемами, которые в настоящее время поддерживаются в
sysconfig.
-
sysconfig.get_default_scheme()¶ Возвращает имя схемы по умолчанию для текущей платформы.
Новое в версии 3.10: Ранее эта функция называлась
_get_default_scheme()и считалась деталью реализации.
-
sysconfig.get_preferred_scheme(key)¶ Возвращает предпочтительное имя схемы для раскладки установки, заданной параметром key.
key должен быть
"prefix","home"или"user".Возвращаемое значение – это имя схемы из списка в
get_scheme_names(). Его можно передавать функциямsysconfig, которые принимают аргумент scheme, напримерget_paths().Новое в версии 3.10.
-
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.
Другие функции¶Other functions
-
sysconfig.get_python_version()¶ Возвращает номер версии Python
MAJOR.MINORв виде строки. Аналогично'%d.%d' % sys.version_info[:2].
-
sysconfig.get_platform()¶ Возвращает строку, идентифицирующую текущую платформу.
В основном используется для различения каталогов сборки и собранных дистрибутивов, специфичных для платформы. Обычно содержит имя ОС, версию и архитектуру (как указано в «os.uname()»), хотя точный набор информации зависит от ОС; например, в Linux версия ядра не особенно важна.
Примеры возвращаемых значений:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows вернёт одно из:
win-amd64 (64-разрядная Windows на AMD64, также известная как x86_64, Intel64 и EM64T)
win32 (все остальные – фактически возвращается sys.platform)
macOS может вернуть:
macosx-10.6-ppc
macosx-10.4-ppc64
macosx-10.3-i386
macosx-10.4-fat
Для других платформ, не основанных на 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 в качестве скрипта¶Using sysconfig as a script
Можно использовать sysconfig как скрипт с опцией -m Python:
$ 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().