Документация Python неофициальный перевод
Содержание страницы

27.2. sysconfig – Предоставляет доступ к информации о конфигурации Pythonsysconfig – Provide access to Python’s configuration information

Новое в версии 3.2.

Исходный код: Lib/sysconfig.py


Модуль sysconfig предоставляет доступ к информации о конфигурации Python, например к списку путей установки и переменным конфигурации, актуальным для текущей платформы.

27.2.1. Переменные конфигурацииConfiguration variables

Дистрибутив 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++']

27.2.2. Пути установкиInstallation paths

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.
  • os2: схема для платформ OS/2.
  • os2_home: схема для платформ OS/2, при использовании опции 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.

27.2.3. Другие функцииOther functions

sysconfig.get_python_version()

Возвращает номер версии Python в формате MAJOR.MINOR в виде строки. Аналогично 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 была собрана из исходного кода.

sysconfig.parse_config_h(fp[, vars])

Разбирает файл в стиле config.h.

fp – это файлоподобный объект, указывающий на файл в стиле config.h.

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

sysconfig.get_config_h_filename()

Возвращает путь к pyconfig.h.

sysconfig.get_makefile_filename()

Возвращает путь к Makefile.

27.2.4. Использование sysconfig в качестве скриптаUsing sysconfig as a script

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"
        ASDLGEN = "./Parser/asdl_c.py"
        ...

Этот вызов выведет в стандартный вывод информацию, возвращаемую get_platform(), get_python_version(), get_path() и get_config_vars().