sysconfig
— Предоставление доступа к информации о конфигурации Python¶
Добавлено в версии 3.2.
Исходный код: Lib/sysconfig.py.
Модуль sysconfig
предоставляет доступ к конфигурационной информации Python, такой как список путей установки и конфигурационные переменные, относящиеся к текущей платформе.
Конфигурационные переменные¶
Дистрибутив 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++']
Пути установки¶
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
, которые принимают аргумент схема, напримерget_paths()
.Добавлено в версии 3.10.
-
sysconfig.
_get_preferred_schemes
()¶ Возвращает dict, содержащий имена предпочтительных схем на текущей платформе. Реализаторы и распространители 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
()¶ Возвращает номер версии
MAJOR.MINOR
Python в виде строки. Аналогично'%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
в качестве сценария¶
Вы можете использовать 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()
.