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

sysconfig.md

203 строк · 14.7 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.2/library/sysconfig.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 27.2. [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) – Предоставляет доступ к информации о конфигурации Python89Новое в версии 3.2.1011**Исходный код:** [Lib/sysconfig.py](https://python-all.ru/src/3.2/Lib/sysconfig.py)1213---1415Модуль [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) предоставляет доступ к информации о конфигурации Python, например к списку путей установки и переменным конфигурации, актуальным для текущей платформы.1617## 27.2.1. Переменные конфигурации1819Дистрибутив Python содержит `Makefile` и заголовочный файл `pyconfig.h`, необходимые для сборки как самого двоичного файла Python, так и сторонних расширений на C, скомпилированных с помощью [`distutils`](https://python-all.ru/3.2/library/distutils.html#module-distutils).2021[`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) помещает все переменные, найденные в этих файлах, в словарь, к которому можно получить доступ с помощью [`get_config_vars()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_config_vars) или [`get_config_var()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_config_var).2223Обратите внимание: в Windows этот набор значительно меньше.2425#### `sysconfig.get_config_vars(*args)`2627Без аргументов возвращает словарь всех переменных конфигурации, актуальных для текущей платформы.2829С аргументами возвращает список значений, полученных в результате поиска каждого аргумента в словаре переменных конфигурации.3031Для каждого аргумента, если значение не найдено, возвращает `None`.3233#### `sysconfig.get_config_var(name)`3435Возвращает значение одной переменной *name*. Эквивалентно `get_config_vars().get(name)`.3637Если *name* не найдено, возвращает `None`.3839Пример использования:4041```python42>>> import sysconfig43>>> sysconfig.get_config_var('Py_ENABLE_SHARED')44045>>> sysconfig.get_config_var('LIBDIR')46'/usr/local/lib'47>>> sysconfig.get_config_vars('AR', 'CXX')48['ar', 'g++']49```5051## 27.2.2. Пути установки5253Python использует схему установки, которая различается в зависимости от платформы и параметров установки. Эти схемы хранятся в [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) под уникальными идентификаторами, основанными на значении, возвращаемом [`os.name`](https://python-all.ru/3.2/library/os.html#os.name).5455Каждый новый компонент, устанавливаемый с помощью [`distutils`](https://python-all.ru/3.2/library/distutils.html#module-distutils) или системы на основе Distutils, будет следовать той же схеме, чтобы копировать свои файлы в нужные места.5657В настоящее время Python поддерживает семь схем:5859- *posix\_prefix*: схема для платформ Posix, таких как Linux или Mac OS X. Это схема по умолчанию, используемая при установке Python или какого-либо компонента.60- *posix\_home*: схема для платформ Posix, используемая, когда при установке задан параметр *home*. Эта схема применяется, когда компонент устанавливается через Distutils с указанием определённого префикса home.61- *posix\_user*: схема для платформ Posix, используемая, когда компонент устанавливается через Distutils и указан параметр *user*. Эта схема определяет пути, расположенные в домашнем каталоге пользователя.62- *nt*: схема для платформ NT, таких как Windows.63- *nt\_user*: схема для платформ NT, когда используется опция *user*.64- *os2*: схема для платформ OS/2.65- *os2\_home*: схема для платформ OS/2, при использовании опции *user*.6667Каждая схема состоит из набора путей, и каждый путь имеет уникальный идентификатор. Python в настоящее время использует восемь путей:6869- *stdlib*: каталог, содержащий файлы стандартной библиотеки Python, которые не зависят от платформы.70- *platstdlib*: каталог, содержащий файлы стандартной библиотеки Python, которые зависят от платформы.71- *platlib*: каталог для специфичных для сайта и платформы файлов.72- *purelib*: каталог для специфичных для сайта, не зависящих от платформы файлов.73- *include*: каталог для не зависящих от платформы заголовочных файлов.74- *platinclude*: каталог для зависящих от платформы заголовочных файлов.75- *scripts*: каталог для файлов скриптов.76- *data*: каталог для файлов данных.7778[`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) предоставляет несколько функций для определения этих путей.7980#### `sysconfig.get_scheme_names()`8182Возвращает кортеж, содержащий все схемы, поддерживаемые в [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig).8384#### `sysconfig.get_path_names()`8586Возвращает кортеж, содержащий все имена путей, поддерживаемые в [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig).8788#### `sysconfig.get_path(name[, scheme[, vars[, expand]]])`8990Возвращает путь установки, соответствующий имени пути *name*, из схемы установки с именем *scheme*.9192*name* должно быть значением из списка, возвращаемого [`get_path_names()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_path_names).9394[`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) хранит пути установки, соответствующие каждому имени пути, для каждой платформы, с переменными, которые будут раскрыты. Например, путь *stdlib* для схемы *nt* имеет вид: `{base}/Lib`.9596[`get_path()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_path) использует переменные, возвращаемые [`get_config_vars()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_config_vars), для раскрытия пути. Все переменные имеют значения по умолчанию для каждой платформы, так что можно вызвать эту функцию и получить значение по умолчанию.9798Если *scheme* указано, оно должно быть значением из списка, возвращаемого [`get_scheme_names()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_scheme_names). В противном случае используется схема по умолчанию для текущей платформы.99100Если *vars* указано, это должен быть словарь переменных, который обновит словарь, возвращаемый [`get_config_vars()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_config_vars).101102Если *expand* установлен в `False`, путь не будет раскрыт с помощью переменных.103104Если *name* не найдено, возвращает `None`.105106#### `sysconfig.get_paths([scheme[, vars[, expand]]])`107108Возвращает словарь, содержащий все пути установки, соответствующие схеме установки. См. [`get_path()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_path) для получения дополнительной информации.109110Если *scheme* не указан, будет использована схема по умолчанию для текущей платформы.111112Если указан *vars*, это должен быть словарь переменных, который дополнит словарь, используемый для раскрытия путей.113114Если *expand* установлен в False, пути не будут раскрыты.115116Если *scheme* не является существующей схемой, [`get_paths()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_paths) вызовет [`KeyError`](https://python-all.ru/3.2/library/exceptions.html#KeyError).117118## 27.2.3. Другие функции119120#### `sysconfig.get_python_version()`121122Возвращает номер версии Python в формате `MAJOR.MINOR` в виде строки. Аналогично `sys.version[:3]`.123124#### `sysconfig.get_platform()`125126Возвращает строку, идентифицирующую текущую платформу.127128В основном используется для различения платформо-зависимых каталогов сборки и платформо-зависимых дистрибутивов. Обычно включает имя и версию ОС, а также архитектуру (как возвращается [`os.uname()`](https://python-all.ru/3.2/library/os.html#os.uname)), хотя точный состав информации зависит от ОС; например, для IRIX архитектура не особенно важна (IRIX работает только на оборудовании SGI), а для Linux версия ядра не особенно важна.129130Примеры возвращаемых значений:131132- linux-i586133- linux-alpha (?)134- solaris-2.6-sun4u135- irix-5.3136- irix64-6.2137138Windows вернёт одно из:139140- win-amd64 (64-разрядная Windows на AMD64 (также известный как x86\_64, Intel64, EM64T и т.д.)141- win-ia64 (64-разрядная Windows на Itanium)142- win32 (все остальные – фактически возвращается sys.platform)143144Mac OS X может возвращать:145146- macosx-10.6-ppc147- macosx-10.4-ppc64148- macosx-10.3-i386149- macosx-10.4-fat150151Для других не-POSIX платформ в настоящее время просто возвращает [`sys.platform`](https://python-all.ru/3.2/library/sys.html#sys.platform).152153#### `sysconfig.is_python_build()`154155Возвращает `True`, если текущая установка Python была собрана из исходного кода.156157#### `sysconfig.parse_config_h(fp[, vars])`158159Разбирает файл в стиле `config.h`.160161*fp* – это файлоподобный объект, указывающий на файл в стиле `config.h`.162163Возвращается словарь, содержащий пары имя/значение. Если в качестве второго аргумента передан необязательный словарь, он используется вместо нового словаря и обновляется значениями, прочитанными из файла.164165#### `sysconfig.get_config_h_filename()`166167Возвращает путь к `pyconfig.h`.168169#### `sysconfig.get_makefile_filename()`170171Возвращает путь к `Makefile`.172173## 27.2.4. Использование [`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) в качестве скрипта174175[`sysconfig`](https://python-all.ru/3.2/library/sysconfig.html#module-sysconfig) можно использовать как скрипт с опцией *-m* Python:176177```python178$ python -m sysconfig179Platform: "macosx-10.4-i386"180Python version: "3.2"181Current installation scheme: "posix_prefix"182183Paths:184        data = "/usr/local"185        include = "/Users/tarek/Dev/svn.python.org/py3k/Include"186        platinclude = "."187        platlib = "/usr/local/lib/python3.2/site-packages"188        platstdlib = "/usr/local/lib/python3.2"189        purelib = "/usr/local/lib/python3.2/site-packages"190        scripts = "/usr/local/bin"191        stdlib = "/usr/local/lib/python3.2"192193Variables:194        AC_APPLE_UNIVERSAL_BUILD = "0"195        AIX_GENUINE_CPLUSPLUS = "0"196        AR = "ar"197        ARFLAGS = "rc"198        ASDLGEN = "./Parser/asdl_c.py"199        ...200```201202Этот вызов выведет в стандартный вывод информацию, возвращаемую [`get_platform()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_platform), [`get_python_version()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_python_version), [`get_path()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_path) и [`get_config_vars()`](https://python-all.ru/3.2/library/sysconfig.html#sysconfig.get_config_vars).203