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 или Mac OS X. Это стандартная схема, используемая при установке Python или компонента.
- posix_home: схема для платформ POSIX, используемая при использовании параметра home при установке. Эта схема используется, когда компонент устанавливается через Distutils со специфическим префиксом домашнего каталога.
- posix_user: схема для платформ POSIX, используемая, когда компонент устанавливается через Distutils и используется параметр user. Эта схема определяет пути, расположенные в домашнем каталоге пользователя.
- nt: схема для платформ NT, таких как Windows.
- nt_user: схема для платформ NT, когда используется параметр user.
Каждая схема сама по себе состоит из ряда путей, и каждый путь имеет уникальный идентификатор. Python в настоящее время использует восемь путей:
- stdlib: каталог, содержащий стандартные файлы библиотеки Python, которые не зависят от платформы.
- platstdlib: каталог, содержащий стандартные файлы библиотеки Python, зависящие от платформы.
- platlib: каталог для файлов, специфичных для сайта и платформы.
- purelib: каталог для файлов, специфичных для сайта, но не зависящих от платформы.
- include: каталог для заголовочных файлов, не зависящих от платформы.
- platinclude: каталог для заголовочных файлов, зависящих от платформы.
- scripts: каталог для файлов сценариев.
- data: каталог для файлов данных.
sysconfig предоставляет некоторые функции для определения этих путей.
-
sysconfig.get_scheme_names() -
Возвращает кортеж, содержащий все схемы, которые в настоящее время поддерживаются в
sysconfig.
-
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 не найден, возвращается
None.
-
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 версия ядра не является особенно важной.
Примеры возвращаемых значений:
- linux-i586
- linux-alpha (?)
- solaris-2.6-sun4u
Windows вернет одно из:
- win-amd64 (64-битная Windows на AMD64, также x86_64, Intel64 и EM64T)
- 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.
-
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().
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/sysconfig.html