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 или macOS. Это схема по умолчанию, используемая при установке Python или компонента.

  • posix_home: схема для POSIX-платформ, используемая, когда при установке используется опция home. Эта схема используется, когда компонент устанавливается через Distutils с определенным префиксом home.

  • posix_user: схема для POSIX платформ, используемая, когда компонент устанавливается через Distutils и используется опция user. Эта схема определяет пути, расположенные в домашнем каталоге пользователя.

  • nt: схема для платформ NT, таких как Windows.

  • nt_user: схема для платформ NT, когда используется опция user.

  • osx_framework_user: схема для macOS, когда используется параметр user.

Каждая схема состоит из серии путей, и каждый путь имеет уникальный идентификатор. В настоящее время в Python используется восемь путей:

  • stdlib: каталог, содержащий стандартные файлы библиотеки Python, не зависящие от платформы.

  • platstdlib: каталог, содержащий файлы стандартной библиотеки Python, специфичные для конкретной платформы.

  • platlib: каталог для файлов, специфичных для конкретного сайта и платформы.

  • purelib: каталог для файлов, специфичных для конкретного сайта, не относящихся к платформе.

  • include: каталог для неспецифичных для платформы заголовочных файлов.

  • platinclude: каталог для заголовочных файлов, специфичных для платформы.

  • scripts: каталог для файлов сценариев.

  • data: каталог для файлов данных.

sysconfig предоставляет некоторые функции для определения этих путей.

sysconfig.get_scheme_names()

Возвращает кортеж, содержащий все схемы, поддерживаемые в настоящее время в sysconfig.

sysconfig.get_default_scheme()

Возвращает имя схемы по умолчанию для текущей платформы.

Изменено в версии 3.10: Ранее эта функция называлась _get_default_scheme() и считалась деталью реализации.

sysconfig.get_preferred_scheme(key)

Возвращает предпочтительное имя схемы для схемы установки, указанной key.

key должен быть либо "prefix", "home", либо "user".

Возвращаемое значение - это имя схемы, перечисленное в get_scheme_names(). Оно может быть передано в функции sysconfig, которые принимают аргумент схема, например get_paths().

Добавлено в версии 3.10.

sysconfig._get_preferred_schemes()

Возвращает dict, содержащий имена предпочтительных схем на текущей платформе. Реализаторы и распространители Python могут добавить свои предпочтительные схемы в глобальное значение _INSTALL_SCHEMES на уровне модуля и модифицировать эту функцию для возврата имен этих схем, чтобы, например, обеспечить разные схемы для системного и языкового менеджеров пакетов, чтобы пакеты, установленные одним из них, не смешивались с пакетами, установленными другим.

Конечные пользователи не должны использовать эту функцию, а вместо нее использовать get_default_scheme() и get_preferred_scheme().

Добавлено в версии 3.10.

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 не найдено, выдает ошибку KeyError.

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 (64-разрядная Windows на AMD64, также известная как x86_64, Intel64 и EM64T)

  • win32 (все остальные - в частности, возвращается sys.platform)

macOS может вернуться:

  • 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 в качестве сценария с помощью опции -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"
        ...

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

Вернуться на верх