sysconfig — Предоставление доступа к конфигурационной информации Python
Новая версия с 3.2.
Исходный код: Lib/sysconfig.py
Модуль sysconfig предоставляет доступ к конфигурационной информации Python, такой как список путей установки и переменные конфигурации, соответствующие текущей платформе.
1. Переменные конфигурации
Распространение 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++']
2. Пути установки
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.
3. Другие функции
-
sysconfig.get_python_version() -
Возвращает номер версии Python как строку. Аналогично
sys.version[:3].
-
sysconfig.get_platform() -
Возвращает строку, идентифицирующую текущую платформу.
Это используется в основном для различения каталогов сборки, специфичных для платформы, и скомпилированных дистрибутивов, специфичных для платформы. Обычно включает имя и версию ОС, а также архитектуру (как предоставлено
os.uname()), хотя точная информация зависит от ОС; например, для IRIX архитектура не особенно важна (IRIX работает только на оборудовании SGI), но для Linux версия ядра не особенно важна.Примеры возвращаемых значений:
- linux-i586
- linux-alpha (?)
- solaris-2.6-sun4u
- irix-5.3
- irix64-6.2
Windows вернет одно из:
- win-amd64 (64-битная Windows на AMD64 (также x86_64, Intel64, EM64T и т. д. )
- win-ia64 (64-битная Windows на Itanium)
- 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.
4. Использование 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"
...
END_OF_DOCUMENT_MARKER Этот вызов выведет в стандартный вывод информацию, возвращаемую 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.5/library/sysconfig.html