Spec-Zone.ru › Python 3.6

sysconfig — Предоставление доступа к конфигурационной информации Python

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

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

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

29.2.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++']

29.2.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.

29.2.3. Другие функции

sysconfig.get_python_version()

Возвращает номер версии Python MAJOR.MINOR как строку. Аналогично '%d.%d' % sys.version_info[:2].

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.

29.2.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"
        ...

Этот вызов выведет в стандартный вывод информацию, возвращаемую 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.6/library/sysconfig.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API