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 со специфическим префиксом home.
- 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/sysconfig.html