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()

Возвращает номер версии 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 (64bit Windows on AMD64, aka 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.

Словарь, содержащий name/значение пары, является возвращенный. Если дополнительный словарь передается в качестве второго аргумента, он используемый вместо нового словаря и обновляется значения, прочитанным в файле.

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().