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

configure.md

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

1> **Источник:** https://python-all.ru/3.14/using/configure.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 3. Настройка Python89## 3.1. Требования к сборке1011Для сборки CPython потребуется:1213- Компилятор [C11](https://python-all.ru/3.14/using/configure.html). [Опциональные возможности C11](https://python-all.ru/3.14/using/configure.html) не требуются.14- В Windows требуется Microsoft Visual Studio 2017 или новее.15- Поддержка [IEEE 754](https://python-all.ru/3.14/using/configure.html) чисел с плавающей запятой и [нечисла (NaN)](https://python-all.ru/3.14/using/configure.html).16- Поддержка потоков.1718Изменено в версии 3.5: В Windows теперь требуется Visual Studio 2015 или новее.1920Изменено в версии 3.6: Отдельные возможности C99, такие как функции `<stdint.h>` и `static inline`, теперь требуются.2122Изменено в версии 3.7: Поддержка потоков теперь обязательна.2324Изменено в версии 3.11: Теперь требуются компилятор C11, поддержка IEEE 754 и NaN. В Windows требуется Visual Studio 2017 или новее.2526См. также [**PEP 7** «Руководство по стилю C»](https://python-all.ru/3.14/using/configure.html) и [**PEP 11** «Поддержка платформ CPython»](https://python-all.ru/3.14/using/configure.html).2728### 3.1.1. Требования к опциональным модулям2930Некоторые [опциональные модули](https://python-all.ru/3.14/glossary.html#term-optional-module) стандартной библиотеки требуют установки сторонних библиотек для разработки (например, должны быть доступны заголовочные файлы).3132Отсутствующие требования выводятся в `configure`. Модули, отсутствующие из-за неудовлетворённых зависимостей, перечисляются ближе к концу вывода `make`, иногда под внутренним именем, например, `_ctypes` для модуля [`ctypes`](https://python-all.ru/3.14/library/ctypes.html#module-ctypes) .3334При распространении интерпретатора CPython без опциональных модулей рекомендуется уведомлять пользователей, которые обычно ожидают, что модули стандартной библиотеки доступны.3536Зависимости для сборки опциональных модулей:3738| Зависимость | Минимальная версия | Модуль Python |39| --- | --- | --- |40| [libbz2](https://python-all.ru/3.14/using/configure.html) |  | [`bz2`](https://python-all.ru/3.14/library/bz2.html#module-bz2) |41| [libffi](https://python-all.ru/3.14/using/configure.html) | Рекомендуется 3.3.0 | [`ctypes`](https://python-all.ru/3.14/library/ctypes.html#module-ctypes) |42| [liblzma](https://python-all.ru/3.14/using/configure.html) |  | [`lzma`](https://python-all.ru/3.14/library/lzma.html#module-lzma) |43| [libmpdec](https://python-all.ru/3.14/using/configure.html) | 2.5.0 | [`decimal`](https://python-all.ru/3.14/library/decimal.html#module-decimal) [\[1\]](https://python-all.ru/3.14/using/configure.html#id7) |44| [libreadline](https://python-all.ru/3.14/using/configure.html) или [libedit](https://python-all.ru/3.14/using/configure.html) [\[2\]](https://python-all.ru/3.14/using/configure.html#id8) |  | [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline) |45| [libuuid](https://python-all.ru/3.14/using/configure.html) |  | `_uuid` [\[3\]](https://python-all.ru/3.14/using/configure.html#id9) |46| [ncurses](https://python-all.ru/3.14/using/configure.html) [\[4\]](https://python-all.ru/3.14/using/configure.html#id10) |  | [`curses`](https://python-all.ru/3.14/library/curses.html#module-curses) |47| [OpenSSL](https://python-all.ru/3.14/using/configure.html) | Рекомендуется 3.0.18 (минимум 1.1.1) | [`ssl`](https://python-all.ru/3.14/library/ssl.html#module-ssl), [`hashlib`](https://python-all.ru/3.14/library/hashlib.html#module-hashlib) [\[5\]](https://python-all.ru/3.14/using/configure.html#id11) |48| [SQLite](https://python-all.ru/3.14/using/configure.html) | 3.15.2 | [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3) |49| [Tcl/Tk](https://python-all.ru/3.14/using/configure.html) | 8.5.12 | [`tkinter`](https://python-all.ru/3.14/library/tkinter.html#module-tkinter), [IDLE](https://python-all.ru/3.14/library/idle.html#idle), [`turtle`](https://python-all.ru/3.14/library/turtle.html#module-turtle) |50| [zlib](https://python-all.ru/3.14/using/configure.html) | 1.2.2.1 | [`zlib`](https://python-all.ru/3.14/library/zlib.html#module-zlib), [`gzip`](https://python-all.ru/3.14/library/gzip.html#module-gzip), [`ensurepip`](https://python-all.ru/3.14/library/ensurepip.html#module-ensurepip) |51| [zstd](https://python-all.ru/3.14/using/configure.html) | 1.4.5 | [`compression.zstd`](https://python-all.ru/3.14/library/compression.zstd.html#module-compression.zstd) |5253\[[1](https://python-all.ru/3.14/using/configure.html#id2)\]5455Если *libmpdec* недоступен, модуль [`decimal`](https://python-all.ru/3.14/library/decimal.html#module-decimal) будет использовать чисто-Python реализацию. Подробнее см. [`--with-system-libmpdec`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-system-libmpdec).5657\[[2](https://python-all.ru/3.14/using/configure.html#id3)\]5859См. [`--with-readline`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-readline) о выборе бэкенда для модуля [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline).6061\[[3](https://python-all.ru/3.14/using/configure.html#id4)\]6263Модуль [`uuid`](https://python-all.ru/3.14/library/uuid.html#module-uuid) использует `_uuid` для генерации «безопасных» UUID. Подробнее см. документацию модуля.6465\[[4](https://python-all.ru/3.14/using/configure.html#id5)\]6667Модуль [`curses`](https://python-all.ru/3.14/library/curses.html#module-curses) требует библиотеку `libncurses` или `libncursesw`. Модуль [`curses.panel`](https://python-all.ru/3.14/library/curses.panel.html#module-curses.panel) дополнительно требует библиотеку `libpanel` или `libpanelw`.6869\[[5](https://python-all.ru/3.14/using/configure.html#id6)\]7071Если OpenSSL недоступен, модуль [`hashlib`](https://python-all.ru/3.14/library/hashlib.html#module-hashlib) будет использовать встроенные реализации нескольких хеш-функций. См. [`--with-builtin-hashlib-hashes`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-builtin-hashlib-hashes), чтобы *принудительно использовать* OpenSSL.7273Обратите внимание, что таблица включает не все опциональные модули; в частности, платформенно-зависимые модули, такие как [`winreg`](https://python-all.ru/3.14/library/winreg.html#module-winreg), здесь не перечислены.7475> **См. также**76>77> - [Руководство разработчика](https://python-all.ru/3.14/using/configure.html) содержит полный список зависимостей, необходимых для сборки всех модулей, и инструкции по их установке на распространённых платформах.78> - [`--with-system-expat`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-system-expat) позволяет сборку с внешней библиотекой [libexpat](https://python-all.ru/3.14/using/configure.html).79> - [Параметры для сторонних зависимостей](https://python-all.ru/3.14/using/configure.html#configure-options-for-dependencies)8081Изменено в версии 3.1: Теперь для [`tkinter`](https://python-all.ru/3.14/library/tkinter.html#module-tkinter) требуется Tcl/Tk версии 8.3.1.8283Изменено в версии 3.5: Теперь для [`tkinter`](https://python-all.ru/3.14/library/tkinter.html#module-tkinter) требуется Tcl/Tk версии 8.4.8485Изменено в версии 3.7: Теперь для [`hashlib`](https://python-all.ru/3.14/library/hashlib.html#module-hashlib) и [`ssl`](https://python-all.ru/3.14/library/ssl.html#module-ssl) требуется OpenSSL 1.0.2.8687Изменено в версии 3.10: Теперь для [`hashlib`](https://python-all.ru/3.14/library/hashlib.html#module-hashlib) и [`ssl`](https://python-all.ru/3.14/library/ssl.html#module-ssl) требуется OpenSSL 1.1.1. Для [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3) теперь требуется SQLite 3.7.15.8889Изменено в версии 3.11: Теперь требуется Tcl/Tk версии 8.5.12 для [`tkinter`](https://python-all.ru/3.14/library/tkinter.html#module-tkinter).9091Изменено в версии 3.13: Теперь требуется SQLite 3.15.2 для [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3).9293## 3.2. Сгенерированные файлы9495Чтобы уменьшить зависимости сборки, исходный код Python содержит несколько сгенерированных файлов. Команды для перегенерации всех сгенерированных файлов:9697```sh98make regen-all99make regen-stdlib-module-names100make regen-limited-abi101make regen-configure102```103104Файл `Makefile.pre.in` документирует сгенерированные файлы, их входные данные и используемые инструменты для их перегенерации. Ищите цели make `regen-*`.105106### 3.2.1. Сценарий configure107108Команда `make regen-configure` перегенерирует файл `aclocal.m4` и сценарий `configure` с помощью сценария оболочки `Tools/build/regen-configure.sh`, который использует контейнер Ubuntu для получения тех же версий инструментов и обеспечения воспроизводимого результата.109110Контейнер необязателен, следующую команду можно выполнить локально:111112```sh113autoreconf -ivf -Werror114```115116Сгенерированные файлы могут изменяться в зависимости от точных версий используемых инструментов. Контейнер, используемый CPython, содержит [Autoconf](https://python-all.ru/3.14/using/configure.html) 2.72, `aclocal` из [Automake](https://python-all.ru/3.14/using/configure.html) 1.16.5, и [pkg-config](https://python-all.ru/3.14/using/configure.html) 1.8.1.117118Изменено в версии 3.13: Теперь используются Autoconf 2.71 и aclocal 1.16.5 для перегенерации `configure`.119120Изменено в версии 3.14: Теперь используется Autoconf 2.72 для перегенерации `configure`.121122## 3.3. Параметры configure123124Выведите список всех параметров сценария `configure` с помощью:125126```sh127./configure --help128```129130См. также `Misc/SpecialBuilds.txt` в дистрибутиве исходного кода Python.131132### 3.3.1. Общие параметры133134#### `--enable-loadable-sqlite-extensions`135136Поддержка загружаемых расширений в модуле расширения `_sqlite` (по умолчанию отключено) модуля [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3).137138См. метод [`sqlite3.Connection.enable_load_extension()`](https://python-all.ru/3.14/library/sqlite3.html#sqlite3.Connection.enable_load_extension) модуля [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3).139140Добавлено в версии 3.6.141142#### `--disable-ipv6`143144Отключить поддержку IPv6 (включена по умолчанию, если поддерживается), см. модуль [`socket`](https://python-all.ru/3.14/library/socket.html#module-socket).145146#### `--enable-big-digits=[15|30]`147148Определить размер в битах цифр Python [`int`](https://python-all.ru/3.14/library/functions.html#int): 15 или 30 бит.149150По умолчанию размер цифр равен 30.151152Определить `PYLONG_BITS_IN_DIGIT` как `15` или `30`.153154См. [`sys.int_info.bits_per_digit`](https://python-all.ru/3.14/library/sys.html#sys.int_info).155156#### `--with-suffix=SUFFIX`157158Установить суффикс исполняемого файла Python равным *SUFFIX*.159160Суффикс по умолчанию: `.exe` в Windows и macOS (`python.exe` исполняемый файл), `.js` в Emscripten node, `.html` в Emscripten browser, `.wasm` в WASI, и пустая строка на других платформах (`python` исполняемый файл).161162Изменено в версии 3.11: Суффикс по умолчанию на платформе WASM – один из `.js`, `.html` или `.wasm`.163164#### `--with-tzpath=<list of absolute paths separated by pathsep>`165166Выбрать путь поиска часового пояса по умолчанию для [`zoneinfo.TZPATH`](https://python-all.ru/3.14/library/zoneinfo.html#zoneinfo.TZPATH). См. [конфигурацию времени компиляции](https://python-all.ru/3.14/library/zoneinfo.html#zoneinfo-data-compile-time-config) модуля [`zoneinfo`](https://python-all.ru/3.14/library/zoneinfo.html#module-zoneinfo).167168По умолчанию: `/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo`.169170См. разделитель путей [`os.pathsep`](https://python-all.ru/3.14/library/os.html#os.pathsep).171172Добавлено в версии 3.9.173174#### `--without-decimal-contextvar`175176Сборка модуля расширения `_decimal` с контекстом, локальным для потока, а не с контекстом, локальным для корутины (по умолчанию). См. модуль [`decimal`](https://python-all.ru/3.14/library/decimal.html#module-decimal).177178См. [`decimal.HAVE_CONTEXTVAR`](https://python-all.ru/3.14/library/decimal.html#decimal.HAVE_CONTEXTVAR) и модуль [`contextvars`](https://python-all.ru/3.14/library/contextvars.html#module-contextvars).179180Добавлено в версии 3.9.181182#### `--with-dbmliborder=<list of backend names>`183184Переопределяет порядок проверки бэкендов БД для модуля [`dbm`](https://python-all.ru/3.14/library/dbm.html#module-dbm).185186Допустимое значение – строка с именами бэкендов, разделённая двоеточиями (`:`):187188- `ndbm`;189- `gdbm`;190- `bdb`.191192#### `--without-c-locale-coercion`193194Отключает приведение локали C к локали на основе UTF-8 (включено по умолчанию).195196Не определять макрос `PY_COERCE_C_LOCALE`.197198См. [`PYTHONCOERCECLOCALE`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONCOERCECLOCALE) и [**PEP 538**](https://python-all.ru/3.14/using/configure.html).199200#### `--with-platlibdir=DIRNAME`201202Имя каталога библиотек Python (по умолчанию `lib`).203204Fedora и SuSE используют `lib64` на 64-разрядных платформах.205206См. [`sys.platlibdir`](https://python-all.ru/3.14/library/sys.html#sys.platlibdir).207208Добавлено в версии 3.9.209210#### `--with-wheel-pkg-dir=PATH`211212Каталог пакетов wheel, используемых модулем [`ensurepip`](https://python-all.ru/3.14/library/ensurepip.html#module-ensurepip) (по умолчанию отсутствует).213214Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог `/usr/share/python-wheels/` и не устанавливает пакет `ensurepip._bundled`.215216Добавлено в версии 3.10.217218#### `--with-pkg-config=[check|yes|no]`219220Должен ли configure использовать **pkg-config** для обнаружения зависимостей сборки.221222- `check` (по умолчанию): **pkg-config** необязателен223- `yes`: **pkg-config** обязателен224- `no`: configure не использует **pkg-config**, даже если он присутствует225226Добавлено в версии 3.12.227228#### `--enable-pystats`229230Включает сбор внутренней статистики производительности Python.231232По умолчанию сбор статистики выключен. Используйте команду `python3 -X pystats` или установите переменную окружения `PYTHONSTATS=1`, чтобы включить сбор статистики при запуске Python.233234При выходе из Python выгружает статистику, если сбор статистики был включён и не очищен.235236Эффекты:237238- Добавляет опцию командной строки [`-X pystats`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-X).239- Добавляет переменную окружения `PYTHONSTATS`.240- Определяет макрос `Py_STATS`.241- Добавляет функции в модуль [`sys`](https://python-all.ru/3.14/library/sys.html#module-sys):242243  - `sys._stats_on()`: Включает сбор статистики.244  - `sys._stats_off()`: Выключает сбор статистики.245  - `sys._stats_clear()`: Очищает статистику.246  - `sys._stats_dump()`: Сбрасывает статистику в файл и очищает её.247248Статистика будет сброшена в произвольный (вероятно, уникальный) файл в\\n`/tmp/py_stats/` (Unix) или `C:\temp\py_stats\` (Windows). Если этот\\nкаталог не существует, результаты будут выведены в stderr.249250Используйте `Tools/scripts/summarize_stats.py` для чтения статистики.251252Статистика:253254- Код операции:255256  - Специализация: успех, неудача, попадание, отложено, промах, деоптимизация, сбои;257  - Счётчик выполнения;258  - Счётчик пар.259- Вызов:260261  - Встроенные вызовы Python;262  - Вызовы PyEval;263  - Помещено фреймов;264  - Создано объектов фреймов;265  - Вызовы eval: векторный, генераторный, устаревший, функция VECTORCALL, сборка класса, слот, функция “ex”, API, метод.266- Объект:267268  - incref и decref;269  - интерпретатор incref и decref;270  - выделения: все, 512 байт, 4 КиБ, большие;271  - освобождение;272  - в/из списков свободных блоков;273  - словарь материализован/дематериализован;274  - кэш типов;275  - попытки оптимизации;276  - трассы оптимизации создано/выполнено;277  - выполнено uops.278- Сборщик мусора:279280  - Сборок мусора;281  - Посещено объектов;282  - Собрано объектов.283284Добавлено в версии 3.12.285286#### `--disable-gil`287288Включает поддержку запуска Python без [глобальной блокировки\\nинтерпретатора](https://python-all.ru/3.14/glossary.html#term-global-interpreter-lock) (GIL): [сборка без блокировок](https://python-all.ru/3.14/glossary.html#term-free-threaded-build).289290Определяет макрос `Py_GIL_DISABLED` и добавляет `"t"` в\\n[`sys.abiflags`](https://python-all.ru/3.14/library/sys.html#sys.abiflags).291292Подробнее см. [Free-threaded CPython](https://python-all.ru/3.14/whatsnew/3.13.html#whatsnew313-free-threaded-cpython).293294Добавлено в версии 3.13.295296#### `--enable-experimental-jit=[no|yes|yes-off|interpreter]`297298Указывает, как интегрировать [экспериментальный JIT-компилятор](https://python-all.ru/3.14/whatsnew/3.14.html#whatsnew314-jit-compiler).299300- `no`: Не собирать JIT.301- `yes`: Включить JIT. Чтобы отключить его во время выполнения, установите переменную окружения [`PYTHON_JIT=0`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHON_JIT).302- `yes-off`: Собрать JIT, но по умолчанию отключить его. Чтобы включить его во время выполнения, установите переменную окружения [`PYTHON_JIT=1`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHON_JIT).303- `interpreter`: Включить «JIT-интерпретатор» (полезно только для отладки самого JIT). Чтобы отключить его во время выполнения, установите переменную окружения [`PYTHON_JIT=0`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHON_JIT).304305`--enable-experimental-jit=no` – поведение по умолчанию, если опция не указана, а `--enable-experimental-jit` – сокращение для `--enable-experimental-jit=yes`. См. `Tools/jit/README.md` для получения дополнительной информации, включая установку необходимых зависимостей времени сборки.306307> **Примечание**308>309> При сборке CPython с включённым JIT убедитесь, что в системе установлен Python 3.11 или новее.310311Добавлено в версии 3.13.312313#### `PKG_CONFIG`314315Путь к утилите `pkg-config`.316317#### `PKG_CONFIG_LIBDIR`318319#### `PKG_CONFIG_PATH`320321Параметры `pkg-config`.322323### 3.3.2. Параметры компилятора C324325#### `CC`326327Команда компилятора C.328329#### `CFLAGS`330331Флаги компилятора C.332333#### `CPP`334335Команда препроцессора C.336337#### `CPPFLAGS`338339Флаги препроцессора C, например `-Iinclude_dir`.340341### 3.3.3. Параметры компоновщика342343#### `LDFLAGS`344345Флаги компоновщика, например `-Llibrary_directory`.346347#### `LIBS`348349Библиотеки для передачи компоновщику, например `-llibrary`.350351#### `MACHDEP`352353Имя для машинно-зависимых файлов библиотек.354355### 3.3.4. Параметры для сторонних зависимостей356357Добавлено в версии 3.12.358359#### `BZIP2_CFLAGS`360361#### `BZIP2_LIBS`362363Флаги компилятора C и компоновщика для связывания Python с `libbz2`, используемые модулем [`bz2`](https://python-all.ru/3.14/library/bz2.html#module-bz2), переопределяющие `pkg-config`.364365#### `CURSES_CFLAGS`366367#### `CURSES_LIBS`368369Флаги компилятора C и компоновщика для `libncurses` или `libncursesw`, используемые модулем [`curses`](https://python-all.ru/3.14/library/curses.html#module-curses), переопределяющие `pkg-config`.370371#### `GDBM_CFLAGS`372373#### `GDBM_LIBS`374375Флаги компилятора C и компоновщика для `gdbm`.376377#### `LIBEDIT_CFLAGS`378379#### `LIBEDIT_LIBS`380381Флаги компилятора C и компоновщика для `libedit`, используемые модулем [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline), переопределяющие `pkg-config`.382383#### `LIBFFI_CFLAGS`384385#### `LIBFFI_LIBS`386387Флаги компилятора C и компоновщика для `libffi`, используемые модулем [`ctypes`](https://python-all.ru/3.14/library/ctypes.html#module-ctypes), переопределяющие `pkg-config`.388389#### `LIBMPDEC_CFLAGS`390391#### `LIBMPDEC_LIBS`392393Флаги компилятора C и компоновщика для `libmpdec`, используемые модулем [`decimal`](https://python-all.ru/3.14/library/decimal.html#module-decimal), переопределяющие `pkg-config`.394395> **Примечание**396>397> Эти переменные окружения не действуют, если не указан [`--with-system-libmpdec`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-system-libmpdec).398399#### `LIBLZMA_CFLAGS`400401#### `LIBLZMA_LIBS`402403Флаги компилятора C и компоновщика для `liblzma`, используемые модулем [`lzma`](https://python-all.ru/3.14/library/lzma.html#module-lzma), переопределяющие `pkg-config`.404405#### `LIBREADLINE_CFLAGS`406407#### `LIBREADLINE_LIBS`408409Флаги компилятора C и компоновщика для `libreadline`, используемые модулем [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline), переопределяющие `pkg-config`.410411#### `LIBSQLITE3_CFLAGS`412413#### `LIBSQLITE3_LIBS`414415Флаги компилятора C и компоновщика для `libsqlite3`, используемые модулем [`sqlite3`](https://python-all.ru/3.14/library/sqlite3.html#module-sqlite3), переопределяющие `pkg-config`.416417#### `LIBUUID_CFLAGS`418419#### `LIBUUID_LIBS`420421Флаги компилятора C и компоновщика для `libuuid`, используемые модулем [`uuid`](https://python-all.ru/3.14/library/uuid.html#module-uuid), переопределяющие `pkg-config`.422423#### `LIBZSTD_CFLAGS`424425#### `LIBZSTD_LIBS`426427Флаги компилятора C и компоновщика для `libzstd`, используемые модулем [`compression.zstd`](https://python-all.ru/3.14/library/compression.zstd.html#module-compression.zstd), переопределяющие `pkg-config`.428429Добавлено в версии 3.14.430431#### `PANEL_CFLAGS`432433#### `PANEL_LIBS`434435Флаги компилятора C и компоновщика для PANEL, переопределяющие `pkg-config`.436437Флаги компилятора C и компоновщика для `libpanel` или `libpanelw`, используемые модулем [`curses.panel`](https://python-all.ru/3.14/library/curses.panel.html#module-curses.panel), переопределяющие `pkg-config`.438439#### `TCLTK_CFLAGS`440441#### `TCLTK_LIBS`442443Флаги компилятора C и компоновщика для TCLTK, переопределяющие `pkg-config`.444445#### `ZLIB_CFLAGS`446447#### `ZLIB_LIBS`448449Флаги компилятора C и компоновщика для `libzlib`, используемые модулем [`gzip`](https://python-all.ru/3.14/library/gzip.html#module-gzip), переопределяющие `pkg-config`.450451### 3.3.5. Параметры WebAssembly452453#### `--enable-wasm-dynamic-linking`454455Включить поддержку динамической компоновки для WASM.456457Динамическая компоновка включает `dlopen`. Размер исполняемого файла увеличивается из-за ограниченного удаления мёртвого кода и дополнительных возможностей.458459Добавлено в версии 3.12.460461#### `--enable-wasm-pthreads`462463Включить поддержку pthreads для WASM.464465Добавлено в версии 3.12.466467### 3.3.6. Параметры установки468469#### `--prefix=PREFIX`470471Устанавливает архитектурно-независимые файлы в PREFIX. В Unix по умолчанию используется `/usr/local`.472473Это значение можно получить во время выполнения с помощью [`sys.prefix`](https://python-all.ru/3.14/library/sys.html#sys.prefix).474475Например, можно использовать `--prefix="$HOME/.local/"` для установки Python в домашний каталог.476477#### `--exec-prefix=EPREFIX`478479Устанавливает архитектурно-зависимые файлы в EPREFIX, по умолчанию [`--prefix`](https://python-all.ru/3.14/using/configure.html#cmdoption-prefix).480481Это значение можно получить во время выполнения с помощью [`sys.exec_prefix`](https://python-all.ru/3.14/library/sys.html#sys.exec_prefix).482483#### `--disable-test-modules`484485Не собирать и не устанавливать тестовые модули, такие как пакет [`test`](https://python-all.ru/3.14/library/test.html#module-test) или модуль расширения `_testcapi` (собирается и устанавливается по умолчанию).486487Добавлено в версии 3.10.488489#### `--with-ensurepip=[upgrade|install|no]`490491Выбирает команду [`ensurepip`](https://python-all.ru/3.14/library/ensurepip.html#module-ensurepip), запускаемую при установке Python:492493- `upgrade` (по умолчанию): запустить команду `python -m ensurepip --altinstall --upgrade` .494- `install`: запустить команду `python -m ensurepip --altinstall`;495- `no`: не запускать ensurepip;496497Добавлено в версии 3.6.498499### 3.3.7. Параметры производительности500501Для достижения максимальной производительности рекомендуется настраивать Python с помощью `--enable-optimizations --with-lto` (PGO + LTO). Экспериментальный флаг `--enable-bolt` также можно использовать для повышения производительности.502503#### `--enable-optimizations`504505Включает профильную оптимизацию (PGO) с помощью [`PROFILE_TASK`](https://python-all.ru/3.14/using/configure.html#envvar-PROFILE_TASK) (по умолчанию отключено).506507Компилятору Clang требуется программа `llvm-profdata` для PGO. На macOS она также требуется GCC: GCC – это просто псевдоним Clang на macOS.508509Также отключает семантическое переопределение символов в libpython, если используются `--enable-shared` и GCC: добавьте `-fno-semantic-interposition` в флаги компилятора и компоновщика.510511> **Примечание**512>513> В процессе сборки могут появляться предупреждения компилятора о недоступности данных профиля для некоторых исходных файлов. Эти предупреждения безвредны, так как при сборе данных профиля выполняется лишь часть кода. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив `-Wno-profile-instr-unprofiled` к [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS).514515Добавлено в версии 3.6.516517Изменено в версии 3.10: Используйте `-fno-semantic-interposition` в GCC.518519#### `PROFILE_TASK`520521Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.522523По умолчанию: `-m test --pgo --timeout=$(TESTTIMEOUT)`.524525Добавлено в версии 3.8.526527Изменено в версии 3.13: Сбой задачи больше не игнорируется без уведомления.528529#### `--with-lto=[full|thin|no|yes]`530531Включает оптимизацию во время компоновки (LTO) в любой сборке (по умолчанию отключено).532533Компилятору Clang требуется `llvm-ar` для LTO (`ar` в macOS), а также компоновщик, поддерживающий LTO (`ld.gold` или `lld`).534535Добавлено в версии 3.6.536537Добавлено в версии 3.11: Для использования функции ThinLTO используйте `--with-lto=thin` в Clang.538539Изменено в версии 3.12: Используйте ThinLTO в качестве политики оптимизации по умолчанию в Clang, если компилятор поддерживает этот флаг.540541#### `--enable-bolt`542543Включает использование [оптимизатора бинарных файлов после компоновки BOLT](https://python-all.ru/3.14/using/configure.html) (по умолчанию отключено).544545BOLT является частью проекта LLVM, но не всегда входит в их бинарные дистрибутивы. Этот флаг требует наличия `llvm-bolt` и `merge-fdata`.546547BOLT – всё ещё относительно новый проект, поэтому этот флаг пока следует считать экспериментальным. Поскольку этот инструмент работает с машинным кодом, его успех зависит от комбинации окружения сборки, других аргументов конфигурации оптимизации и архитектуры CPU, и не все комбинации поддерживаются. Известно, что версии BOLT до LLVM 16 аварийно завершаются в некоторых сценариях. Настоятельно рекомендуется использовать LLVM 16 или новее для оптимизации BOLT.548549Переменные `BOLT_INSTRUMENT_FLAGS` и `BOLT_APPLY_FLAGS` **configure** можно определить, чтобы переопределить набор аргументов по умолчанию для **llvm-bolt** для инструментирования и применения данных BOLT к бинарным файлам соответственно.550551Добавлено в версии 3.12.552553#### `BOLT_APPLY_FLAGS`554555Аргументы для `llvm-bolt` при создании [оптимизированного BOLT бинарного файла](https://python-all.ru/3.14/using/configure.html).556557Добавлено в версии 3.12.558559#### `BOLT_INSTRUMENT_FLAGS`560561Аргументы для `llvm-bolt` при инструментировании бинарных файлов.562563Добавлено в версии 3.12.564565#### `--with-computed-gotos`566567Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).568569#### `--with-tail-call-interp`570571Включает интерпретаторы, использующие хвостовые вызовы в CPython. Если эта опция включена, настоятельно рекомендуется также включить PGO ([`--enable-optimizations`](https://python-all.ru/3.14/using/configure.html#cmdoption-enable-optimizations)). Эта опция требует компилятор C с поддержкой хвостовых вызовов и соглашения о вызовах [preserve\_none](https://python-all.ru/3.14/using/configure.html). Например, Clang 19 и новее поддерживает эту функцию.572573Добавлено в версии 3.14.574575#### `--without-mimalloc`576577Отключает быстрый распределитель [mimalloc](https://python-all.ru/3.14/c-api/memory.html#mimalloc) (включён по умолчанию).578579Эту опцию нельзя использовать вместе с [`--disable-gil`](https://python-all.ru/3.14/using/configure.html#cmdoption-disable-gil), так как [сборка без GIL](https://python-all.ru/3.14/glossary.html#term-free-threading) требует mimalloc.580581См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONMALLOC).582583#### `--without-pymalloc`584585Отключает специализированный распределитель памяти Python [pymalloc](https://python-all.ru/3.14/c-api/memory.html#pymalloc) (включён по умолчанию).586587См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONMALLOC).588589#### `--without-doc-strings`590591Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.592593Не определять макрос `WITH_DOC_STRINGS`.594595См. макрос `PyDoc_STRVAR()`.596597#### `--enable-profiling`598599Включает профилирование кода на уровне C с помощью `gprof` (отключено по умолчанию).600601#### `--with-strict-overflow`602603Добавляет `-fstrict-overflow` в флаги компилятора C (по умолчанию добавляется `-fno-strict-overflow`).604605#### `--without-remote-debug`606607Отключает поддержку удаленной отладки, описанную в [**PEP 768**](https://python-all.ru/3.14/using/configure.html) (включена по умолчанию). Когда этот флаг указан, код, который позволяет интерпретатору планировать выполнение файла Python в отдельном процессе, как описано в [**PEP 768**](https://python-all.ru/3.14/using/configure.html), не компилируется. Это включает как функциональность для планирования выполняемого кода, так и функциональность для получения кода для выполнения.608609#### `Py_REMOTE_DEBUG`610611Этот макрос определяется по умолчанию, если Python не сконфигурирован с [`--without-remote-debug`](https://python-all.ru/3.14/using/configure.html#cmdoption-without-remote-debug).612613Обратите внимание, что даже если макрос определён, удаленная отладка может быть недоступна (например, на несовместимой платформе).614615Добавлено в версии 3.14.616617### 3.3.8. Отладочная сборка Python618619Отладочная сборка – это Python, собранный с опцией конфигурации [`--with-pydebug`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-pydebug).620621Эффекты отладочной сборки:622623- Показывать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле [`warnings`](https://python-all.ru/3.14/library/warnings.html#module-warnings).624- Добавляет `d` в [`sys.abiflags`](https://python-all.ru/3.14/library/sys.html#sys.abiflags).625- Добавляет функцию `sys.gettotalrefcount()`.626- Добавляет опцию командной строки [`-X showrefcount`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-X).627- Добавляет опцию командной строки [`-d`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-d) и переменную окружения [`PYTHONDEBUG`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONDEBUG) для отладки парсера.628- Добавляет поддержку переменной `__lltrace__`: включение низкоуровневой трассировки в цикле выполнения байт-кода, если переменная определена.629- Устанавливает [отладочные привязки на распределители памяти](https://python-all.ru/3.14/c-api/memory.html#default-memory-allocators) для обнаружения переполнения буфера и других ошибок памяти.630- Определяет макросы `Py_DEBUG` и `Py_REF_DEBUG`.631- Добавляет проверки времени выполнения: код, окружённый `#ifdef Py_DEBUG` и `#endif`. Включает утверждения `assert(...)` и `_PyObject_ASSERT(...)`: не устанавливайте макрос `NDEBUG` (см. также опцию конфигурации [`--with-assertions`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-assertions)). Основные проверки времени выполнения:632633  - Добавляет проверки корректности аргументов функций.634  - Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неинициализированных объектов.635  - Гарантирует, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.636  - Проверяется, что функции деаллокации не изменяют текущее исключение.637  - Сборщик мусора (функция [`gc.collect()`](https://python-all.ru/3.14/library/gc.html#gc.collect)) выполняет базовые проверки корректности объектов.638  - Макрос `Py_SAFE_DOWNCAST()` проверяет целочисленное переполнение (underflow и overflow) при понижающем приведении от широких типов к узким.639640См. также [режим разработки Python](https://python-all.ru/3.14/library/devmode.html#devmode) и опцию конфигурации [`--with-trace-refs`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-trace-refs).641642Изменено в версии 3.8: Релизные сборки теперь совместимы по ABI с отладочными: определение макроса `Py_DEBUG` больше не подразумевает макрос `Py_TRACE_REFS` (см. опцию [`--with-trace-refs`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-trace-refs)). Однако отладочные сборки по-прежнему экспортируют больше символов, чем релизные, и код, собранный для отладочной сборки, не обязательно совместим с релизной.643644### 3.3.9. Отладочные опции645646#### `--with-pydebug`647648[Собрать Python в отладочном режиме](https://python-all.ru/3.14/using/configure.html#debug-build): определяет макрос `Py_DEBUG` (отключён по умолчанию).649650#### `--with-trace-refs`651652Включает отслеживание ссылок для целей отладки (отключено по умолчанию).653654Эффекты:655656- Определяет макрос `Py_TRACE_REFS`.657- Добавляет функцию [`sys.getobjects()`](https://python-all.ru/3.14/library/sys.html#sys.getobjects).658- Добавляет переменную окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONDUMPREFS).659660Переменная окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONDUMPREFS) может использоваться для дампа объектов и счётчиков ссылок, остающихся активными при завершении Python.661662[Статически размещённые объекты](https://python-all.ru/3.14/c-api/typeobj.html#static-types) не отслеживаются.663664Добавлено в версии 3.8.665666Изменено в версии 3.13: Эта сборка теперь совместима по ABI с релизной сборкой и [отладочной сборкой](https://python-all.ru/3.14/using/configure.html#debug-build).667668#### `--with-assertions`669670Сборка с включёнными C-утверждениями (по умолчанию нет): `assert(...);` и `_PyObject_ASSERT(...);`.671672Если установлен, макрос `NDEBUG` не определяется в переменной компилятора [`OPT`](https://python-all.ru/3.14/using/configure.html#envvar-OPT).673674См. также опцию [`--with-pydebug`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-pydebug) ([отладочная сборка](https://python-all.ru/3.14/using/configure.html#debug-build)), которая также включает утверждения.675676Добавлено в версии 3.6.677678#### `--with-valgrind`679680Включить поддержку Valgrind (по умолчанию нет).681682#### `--with-dtrace`683684Включить поддержку DTrace (по умолчанию нет).685686См. [Инструментирование CPython с помощью DTrace и SystemTap](https://python-all.ru/3.14/howto/instrumentation.html#instrumentation).687688Добавлено в версии 3.6.689690#### `--with-address-sanitizer`691692Включить детектор ошибок памяти AddressSanitizer, `asan` (по умолчанию нет). Чтобы улучшить возможности обнаружения ASan, можно также объединить это с [`--without-pymalloc`](https://python-all.ru/3.14/using/configure.html#cmdoption-without-pymalloc) для отключения специализированного аллокатора малых объектов, чьи выделения не отслеживаются ASan.693694Добавлено в версии 3.6.695696#### `--with-memory-sanitizer`697698Включить детектор ошибок выделения памяти MemorySanitizer, `msan` (по умолчанию нет).699700Добавлено в версии 3.6.701702#### `--with-undefined-behavior-sanitizer`703704Включить детектор неопределённого поведения UndefinedBehaviorSanitizer, `ubsan` (по умолчанию нет).705706Добавлено в версии 3.6.707708#### `--with-thread-sanitizer`709710Включает детектор гонок данных ThreadSanitizer, `tsan` (по умолчанию выключено).711712Добавлено в версии 3.13.713714### 3.3.10. Параметры компоновщика715716#### `--enable-shared`717718Включает сборку разделяемой библиотеки Python: `libpython` (по умолчанию выключено).719720#### `--without-static-libpython`721722Не собирать `libpythonMAJOR.MINOR.a` и не устанавливать `python.o` (собирается и устанавливается по умолчанию).723724Добавлено в версии 3.10.725726### 3.3.11. Параметры библиотек727728#### `--with-libs='lib1 ...'`729730Линковаться с дополнительными библиотеками (по умолчанию нет).731732#### `--with-system-expat`733734Собирать модуль `pyexpat`, используя установленную библиотеку `expat` (по умолчанию нет).735736#### `--with-system-libmpdec`737738Собирать модуль расширения `_decimal`, используя установленную библиотеку `mpdecimal` , см. модуль [`decimal`](https://python-all.ru/3.14/library/decimal.html#module-decimal) (по умолчанию включено).739740Добавлено в версии 3.3.741742Изменено в версии 3.13: По умолчанию используется установленная библиотека `mpdecimal`.743744Изменено в версии 3.15: Встроенная копия библиотеки больше не будет выбираться неявно, если установленная библиотека `mpdecimal` не найдена. Только в Python 3.15 её можно явно выбрать с помощью `--with-system-libmpdec=no` или `--without-system-libmpdec`.745746Устарело с версии 3.13, будет удалено в версии 3.16: Копия исходных кодов библиотеки `mpdecimal` больше не будет распространяться с Python 3.16.747748> **См. также**749>750> [`LIBMPDEC_CFLAGS`](https://python-all.ru/3.14/using/configure.html#cmdoption-arg-LIBMPDEC_CFLAGS) и [`LIBMPDEC_LIBS`](https://python-all.ru/3.14/using/configure.html#cmdoption-arg-LIBMPDEC_LIBS).751752#### `--with-readline=readline|editline`753754Назначить библиотеку-бэкенд для модуля [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline).755756- readline: использовать readline в качестве бэкенда.757- editline: использовать editline в качестве бэкенда.758759Добавлено в версии 3.10.760761#### `--without-readline`762763Не собирать модуль [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline) (собирается по умолчанию).764765Не определять макрос `HAVE_LIBREADLINE`.766767Добавлено в версии 3.10.768769#### `--with-libm=STRING`770771Переопределить математическую библиотеку `libm` на *STRING* (по умолчанию зависит от системы).772773#### `--with-libc=STRING`774775Переопределить библиотеку C `libc` на *STRING* (по умолчанию зависит от системы).776777#### `--with-openssl=DIR`778779Корневой каталог OpenSSL.780781Добавлено в версии 3.7.782783#### `--with-openssl-rpath=[no|auto|DIR]`784785Задать каталог библиотек времени выполнения (rpath) для библиотек OpenSSL:786787- `no` (по умолчанию): не устанавливать rpath;788- `auto`: автоматически определять rpath из [`--with-openssl`](https://python-all.ru/3.14/using/configure.html#cmdoption-with-openssl) и `pkg-config`;789- *DIR*: указать явный rpath.790791Добавлено в версии 3.10.792793### 3.3.12. Параметры безопасности794795#### `--with-hash-algorithm=[fnv|siphash13|siphash24]`796797Выберите алгоритм хеширования для использования в `Python/pyhash.c`:798799- `siphash13` (по умолчанию);800- `siphash24`;801- `fnv`.802803Добавлено в версии 3.4.804805Добавлено в версии 3.11: `siphash13` добавлен и стал новым значением по умолчанию.806807#### `--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2`808809Встроенные хеш-модули:810811- `md5`;812- `sha1`;813- `sha256`;814- `sha512`;815- `sha3` (с shake);816- `blake2`.817818Добавлено в версии 3.9.819820#### `--with-ssl-default-suites=[python|openssl|STRING]`821822Переопределить строку наборов шифров OpenSSL по умолчанию:823824- `python` (по умолчанию): использовать предпочтительный выбор Python;825- `openssl`: оставить настройки OpenSSL по умолчанию без изменений;826- *STRING*: использовать произвольную строку827828См. модуль [`ssl`](https://python-all.ru/3.14/library/ssl.html#module-ssl).829830Добавлено в версии 3.7.831832Изменено в версии 3.10: Настройки `python` и *STRING* также устанавливают TLS 1.2 в качестве минимальной версии протокола.833834#### `--disable-safety`835836Отключает параметры компилятора, которые [рекомендуются OpenSSF](https://python-all.ru/3.14/using/configure.html) из соображений безопасности без потери производительности. Если эта опция не включена, CPython будет собран с использованием безопасных параметров компилятора без замедления. Если эта опция включена, CPython не будет собран с параметрами компилятора, перечисленными ниже.837838Следующие параметры компилятора отключаются с помощью `--disable-safety`:839840- [-fstack-protector-strong](https://python-all.ru/3.14/using/configure.html): Включает проверки времени выполнения для переполнения буфера на стеке.841- [-Wtrampolines](https://python-all.ru/3.14/using/configure.html): Включает предупреждения о трамплинах, требующих исполняемых стеков.842843Добавлено в версии 3.14.844845#### `--enable-slower-safety`846847Включает параметры компилятора, которые [рекомендуются OpenSSF](https://python-all.ru/3.14/using/configure.html) из соображений безопасности, но требуют дополнительных затрат производительности. Если эта опция не включена, CPython не будет собран с использованием безопасных параметров компилятора, влияющих на производительность. Если эта опция включена, CPython будет собран с параметрами компилятора, перечисленными ниже.848849Следующие параметры компилятора включаются с помощью `--enable-slower-safety`:850851- [-D\_FORTIFY\_SOURCE=3](https://python-all.ru/3.14/using/configure.html): Укрепляет исходный код с помощью проверок во время компиляции и выполнения на предмет небезопасного использования libc и переполнения буфера.852853Добавлено в версии 3.14.854855### 3.3.13. Параметры macOS856857См. [Mac/README.rst](https://python-all.ru/src/3.14/Mac/README.rst).858859#### `--enable-universalsdk`860861#### `--enable-universalsdk=SDKDIR`862863Создание универсальной сборки двоичного файла. *SDKDIR* указывает, какой macOS SDK следует использовать для сборки (по умолчанию нет).864865#### `--enable-framework`866867#### `--enable-framework=INSTALLDIR`868869Создаёт Python.framework вместо традиционной установки в Unix. Необязательный *INSTALLDIR* определяет путь установки (по умолчанию – нет).870871#### `--with-universal-archs=ARCH`872873Определяет тип универсального бинарного файла, который будет создан. Этот параметр работает, только если указан [`--enable-universalsdk`](https://python-all.ru/3.14/using/configure.html#cmdoption-enable-universalsdk).874875Варианты:876877- `universal2` (x86-64 и arm64);878- `32-bit` (PPC и i386);879- `64-bit` (PPC64 и x86-64);880- `3-way` (i386, PPC и x86-64);881- `intel` (i386 и x86-64);882- `intel-32` (i386);883- `intel-64` (x86-64);884- `all` (PPC, i386, PPC64 и x86-64).885886Обратите внимание: значения этого параметра конфигурации *не* совпадают с идентификаторами, используемыми для универсальных бинарных колец (wheels) в macOS. Подробнее о [тегах совместимости платформы упаковки, используемых в macOS,](https://python-all.ru/3.14/using/configure.html) см. в Python Packaging User Guide.887888#### `--with-framework-name=FRAMEWORK`889890Задаёт имя для python framework в macOS. Работает только при указанном [`--enable-framework`](https://python-all.ru/3.14/using/configure.html#cmdoption-enable-framework) (по умолчанию: `Python`).891892#### `--with-app-store-compliance`893894#### `--with-app-store-compliance=PATCH-FILE`895896Стандартная библиотека Python содержит строки, которые, как известно, вызывают ошибки автоматических инструментов проверки при отправке на распространение через App Store macOS и iOS. Если этот параметр включён, будет применён список исправлений, которые устраняют несоответствия требованиям магазинов приложений. Можно также указать собственный файл исправлений. По умолчанию этот параметр отключён.897898Добавлено в версии 3.13.899900### 3.3.14. Параметры iOS901902См. [iOS/README.rst](https://python-all.ru/3.14/using/configure.html).903904#### `--enable-framework=INSTALLDIR`905906Создаёт Python.framework. В отличие от macOS, аргумент *INSTALLDIR*, указывающий путь установки, обязателен.907908#### `--with-framework-name=FRAMEWORK`909910Задаёт имя для framework (по умолчанию: `Python`).911912### 3.3.15. Параметры кросс-компиляции913914Кросс-компиляция (также известная как кросс-сборка) используется для сборки Python под другую архитектуру CPU или платформу. Для кросс-компиляции требуется интерпретатор Python для платформы сборки. Версия Python для сборки должна совпадать с версией Python для целевой платформы, скомпилированной кросс-компилятором.915916#### `--build=BUILD`917918настройка для сборки на платформе BUILD, обычно определяется с помощью **config.guess**.919920#### `--host=HOST`921922кросс-компиляция для сборки программ, выполняемых на HOST (целевая платформа)923924#### `--with-build-python=path/to/python`925926путь к `python` двоичному файлу для кросс-компиляции927928Добавлено в версии 3.12.929930#### `CONFIG_SITE=file`931932Переменная окружения, указывающая на файл с переопределениями configure.933934Пример файла *config.site*:935936```ini937# config.site-aarch64938ac_cv_buggy_getaddrinfo=no939ac_cv_file__dev_ptmx=yes940ac_cv_file__dev_ptc=no941```942943#### `HOSTRUNNER`944945Программа, запускающая CPython на хост-платформе для кросс-компиляции.946947Добавлено в версии 3.12.948949Пример кросс-компиляции:950951```sh952CONFIG_SITE=config.site-aarch64 ../configure \953    --build=x86_64-pc-linux-gnu \954    --host=aarch64-unknown-linux-gnu \955    --with-build-python=../x86_64/python956```957958## 3.4. Система сборки Python959960### 3.4.1. Основные файлы системы сборки961962- `configure.ac` =\> `configure`;963- `Makefile.pre.in` =\> `Makefile` (создаётся с помощью `configure`);964- `pyconfig.h` (создаётся с помощью `configure`);965- `Modules/Setup`: расширения на C, собираемые Makefile с помощью `Module/makesetup` shell-скрипта;966967### 3.4.2. Основные этапы сборки968969- C-файлы (`.c`) компилируются в объектные файлы (`.o`).970- Статическая библиотека `libpython` (`.a`) создаётся из объектных файлов.971- `python.o` и статическая библиотека `libpython` компонуются в итоговую программу `python`.972- Расширения на C собираются с помощью Makefile (см. `Modules/Setup`).973974### 3.4.3. Основные цели Makefile975976#### 3.4.3.1. make977978В большинстве случаев при пересборке после редактирования кода или обновления локальной копии из вышестоящего репозитория достаточно просто выполнить `make`, которая (согласно семантике Make) собирает цель по умолчанию – первую, определённую в Makefile. По традиции (в том числе в проекте CPython) это обычно цель `all`. Скрипт `configure` разворачивает переменную `autoconf`, `@DEF_MAKE_ALL_RULE@`, чтобы точно описать, какие цели будет собирать `make all`. Доступны три варианта:979980- `profile-opt` (настроено с помощью `--enable-optimizations`)981- `build_wasm` (выбирается, если хост-платформа совпадает с `wasm32-wasi*` или `wasm32-emscripten`)982- `build_all` (настроено без явного использования других вариантов)983984В зависимости от последних изменений исходных файлов Make пересобирает все цели (объектные файлы и исполняемые), которые считает устаревшими, включая повторный запуск `configure` при необходимости. Однако зависимости между исходниками и целями многочисленны и поддерживаются вручную, поэтому иногда Make не располагает всей информацией, необходимой для правильного обнаружения всех целей, требующих пересборки. В зависимости от того, какие цели не были пересобраны, могут возникнуть различные проблемы. Если возникают проблемы со сборкой или тестированием, которые иначе не объяснить, `make clean && make` должен решить большинство проблем с зависимостями, хотя время сборки при этом увеличится.985986#### 3.4.3.2. make platform987988Собрать программу `python`, но не собирать модули расширения стандартной библиотеки. В результате создаётся файл `platform`, содержащий одну строку с описанием платформы сборки, например `macosx-14.3-arm64-3.12` или `linux-x86_64-3.13`.989990#### 3.4.3.3. make profile-opt991992Собрать Python с профильной оптимизацией (PGO). Чтобы сделать это целью по умолчанию для команды `make`, можно использовать параметр configure [`--enable-optimizations`](https://python-all.ru/3.14/using/configure.html#cmdoption-enable-optimizations) (`make all` или просто `make`).993994#### 3.4.3.4. make clean995996Удалить собранные файлы.997998#### 3.4.3.5. make distclean9991000Помимо работы, выполненной `make clean`, удалить файлы, созданные скриптом configure. Перед повторной сборкой потребуется запустить `configure`. [\[6\]](https://python-all.ru/3.14/using/configure.html#id16)10011002#### 3.4.3.6. make install10031004Собрать цель `all` и установить Python.10051006#### 3.4.3.7. make test10071008Собрать цель `all` и запустить набор тестов Python с опцией `--fast-ci` без GUI-тестов. Переменные:10091010- `TESTOPTS`: дополнительные параметры командной строки regrtest.1011- `TESTPYTHONOPTS`: дополнительные параметры командной строки Python.1012- `TESTTIMEOUT`: тайм-аут в секундах (по умолчанию: 10 минут).10131014#### 3.4.3.8. make ci10151016Это похоже на `make test`, но использует `-ugui` для запуска также GUI-тестов.10171018Добавлено в версии 3.14.10191020#### 3.4.3.9. make buildbottest10211022Это похоже на `make test`, но использует опцию `--slow-ci` и тайм-аут по умолчанию 20 минут вместо опции `--fast-ci`.10231024#### 3.4.3.10. make regen-all10251026Перегенерировать (почти) все сгенерированные файлы. Они включают (но не ограничиваются) случаи байткода и файл генератора парсера. `make regen-stdlib-module-names` и `autoconf` должны быть запущены отдельно для остальных [сгенерированных файлов](https://python-all.ru/3.14/using/configure.html#generated-files).10271028### 3.4.4. Расширения C10291030Некоторые расширения C собираются как встроенные модули, например модуль `sys`. Они собираются с определённым макросом `Py_BUILD_CORE_BUILTIN`. Встроенные модули не имеют атрибута `__file__`:10311032```pycon1033>>> import sys1034>>> sys1035<module 'sys' (built-in)>1036>>> sys.__file__1037Traceback (most recent call last):1038  File "<stdin>", line 1, in <module>1039AttributeError: module 'sys' has no attribute '__file__'1040```10411042Другие расширения C собираются как динамические библиотеки, например модуль `_asyncio`. Они собираются с определённым макросом `Py_BUILD_CORE_MODULE`. Пример на Linux x86-64:10431044```pycon1045>>> import _asyncio1046>>> _asyncio1047<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>1048>>> _asyncio.__file__1049'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'1050```10511052`Modules/Setup` используется для генерации целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера `*shared*`, собираются как динамические библиотеки.10531054Макросы `PyAPI_FUNC()`, `PyAPI_DATA()` и [`PyMODINIT_FUNC`](https://python-all.ru/3.14/c-api/extension-modules.html#c.PyMODINIT_FUNC) из `Include/exports.h` определяются по-разному в зависимости от того, определён ли макрос `Py_BUILD_CORE_MODULE`:10551056- Используйте `Py_EXPORTED_SYMBOL`, если `Py_BUILD_CORE_MODULE` определён.1057- В противном случае используйте `Py_IMPORTED_SYMBOL`.10581059Если макрос `Py_BUILD_CORE_BUILTIN` по ошибке используется для расширения C, собранного как разделяемая библиотека, его функция `PyInit_xxx()` не экспортируется, что вызывает [`ImportError`](https://python-all.ru/3.14/library/exceptions.html#ImportError) при импорте.10601061## 3.5. Флаги компилятора и компоновщика10621063Параметры, задаваемые сценарием `./configure` и переменными окружения, и используемые `Makefile`.10641065### 3.5.1. Флаги препроцессора10661067#### `CONFIGURE_CPPFLAGS`10681069Значение переменной [`CPPFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CPPFLAGS), передаваемое сценарию `./configure`.10701071Добавлено в версии 3.6.10721073#### `CPPFLAGS`10741075(Objective) C/C++ флаги препроцессора, например `-Iinclude_dir`, если заголовочные файлы находятся в нестандартном каталоге *include\_dir*.10761077И [`CPPFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.10781079#### `BASECPPFLAGS`10801081Добавлено в версии 3.4.10821083#### `PY_CPPFLAGS`10841085Дополнительные флаги препроцессора, добавляемые при сборке объектных файлов интерпретатора.10861087По умолчанию: `$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)`.10881089Добавлено в версии 3.2.10901091### 3.5.2. Флаги компилятора10921093#### `CC`10941095Команда компилятора C.10961097Пример: `gcc -pthread`.10981099#### `CXX`11001101Команда компилятора C++.11021103Пример: `g++ -pthread`.11041105#### `CFLAGS`11061107Флаги компилятора C.11081109#### `CFLAGS_NODIST`11101111[`CFLAGS_NODIST`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS_NODIST) используется для сборки интерпретатора и расширений C из стандартной библиотеки. Используйте его, когда флаг компилятора *не* должен быть частью [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS) после установки Python ([gh-65320](https://python-all.ru/3.14/using/configure.html)).11121113В частности, [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS) не должен содержать:11141115- флаг компилятора `-I` (для задания пути поиска включаемых файлов). Флаги `-I` обрабатываются слева направо, и любые флаги из [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS) будут иметь приоритет над `-I` флагами, предоставленными пользователем и пакетами.1116- флаги усиления защиты, такие как `-Werror`, поскольку дистрибутивы не могут контролировать, соответствуют ли установленные пользователями пакеты таким повышенным стандартам.11171118Добавлено в версии 3.5.11191120#### `COMPILEALL_OPTS`11211122Параметры, передаваемые командной строке [`compileall`](https://python-all.ru/3.14/library/compileall.html#module-compileall) при сборке PYC-файлов в `make install`. По умолчанию: `-j0`.11231124Добавлено в версии 3.12.11251126#### `EXTRA_CFLAGS`11271128Дополнительные флаги компилятора C.11291130#### `CONFIGURE_CFLAGS`11311132Значение переменной [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS), передаваемое сценарию `./configure` .11331134Добавлено в версии 3.2.11351136#### `CONFIGURE_CFLAGS_NODIST`11371138Значение переменной [`CFLAGS_NODIST`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS_NODIST), передаваемое сценарию `./configure` .11391140Добавлено в версии 3.5.11411142#### `BASECFLAGS`11431144Базовые флаги компилятора.11451146#### `OPT`11471148Флаги оптимизации.11491150#### `CFLAGS_ALIASING`11511152Флаги строгого или нестрогого алиасинга, используемые для компиляции `Python/dtoa.c`.11531154Добавлено в версии 3.7.11551156#### `CFLAGS_CEVAL`11571158Флаги, используемые для компиляции `Python/ceval.c`.11591160Добавлено в версии 3.14.5.11611162#### `CCSHARED`11631164Флаги компилятора, используемые для сборки разделяемой библиотеки.11651166Например, `-fPIC` используется в Linux и BSD.11671168#### `CFLAGSFORSHARED`11691170Дополнительные флаги C, добавляемые для сборки объектных файлов интерпретатора.11711172По умолчанию: `$(CCSHARED)` при использовании [`--enable-shared`](https://python-all.ru/3.14/using/configure.html#cmdoption-enable-shared), иначе пустая строка.11731174#### `PY_CFLAGS`11751176По умолчанию: `$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)`.11771178#### `PY_CFLAGS_NODIST`11791180По умолчанию: `$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal`.11811182Добавлено в версии 3.5.11831184#### `PY_STDMODULE_CFLAGS`11851186Флаги C, используемые для сборки объектных файлов интерпретатора.11871188По умолчанию: `$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)`.11891190Добавлено в версии 3.7.11911192#### `PY_CORE_CFLAGS`11931194По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE`.11951196Добавлено в версии 3.2.11971198#### `PY_BUILTIN_MODULE_CFLAGS`11991200Флаги компилятора для сборки модуля расширения стандартной библиотеки как встроенного модуля, подобно модулю [`posix`](https://python-all.ru/3.14/library/posix.html#module-posix).12011202По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN`.12031204Добавлено в версии 3.8.12051206#### `PURIFY`12071208Команда Purify. Purify – программа для отладки памяти.12091210По умолчанию: пустая строка (не используется).12111212### 3.5.3. Флаги компоновщика12131214#### `LINKCC`12151216Команда компоновщика, используемая для сборки программ, таких как `python` и `_testembed`.12171218По умолчанию: `$(PURIFY) $(CC)`.12191220#### `CONFIGURE_LDFLAGS`12211222Значение переменной [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS), передаваемое сценарию `./configure`.12231224Избегайте присваивания [`CFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS), [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) и т.д., чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не перезаписывая предустановленные.12251226Добавлено в версии 3.2.12271228#### `LDFLAGS_NODIST`12291230[`LDFLAGS_NODIST`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS_NODIST) используется так же, как [`CFLAGS_NODIST`](https://python-all.ru/3.14/using/configure.html#envvar-CFLAGS_NODIST). Используйте его, когда флаг компоновщика *не* должен быть частью [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) после установки Python ([gh-65320](https://python-all.ru/3.14/using/configure.html)).12311232В частности, [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) не должен содержать:12331234- флаг компилятора `-L` (для установки пути поиска библиотек). Флаги `-L` обрабатываются слева направо, и любые флаги в [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) будут иметь приоритет над флагами `-L`, предоставленными пользователем или пакетом.12351236#### `CONFIGURE_LDFLAGS_NODIST`12371238Значение переменной [`LDFLAGS_NODIST`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS_NODIST), передаваемое сценарию `./configure` .12391240Добавлено в версии 3.8.12411242#### `LDFLAGS`12431244Флаги компоновщика, например, `-Llib_dir`, если библиотеки находятся в нестандартном каталоге *lib\_dir*.12451246И [`CPPFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.14/using/configure.html#envvar-LDFLAGS) должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.12471248#### `LIBS`12491250Флаги компоновщика для передачи библиотек компоновщику при компоновке исполняемого файла Python.12511252Пример: `-lrt`.12531254#### `LDSHARED`12551256Команда для сборки разделяемой библиотеки.12571258По умолчанию: `@LDSHARED@ $(PY_LDFLAGS)`.12591260#### `BLDSHARED`12611262Команда для сборки разделяемой библиотеки `libpython`.12631264По умолчанию: `@BLDSHARED@ $(PY_CORE_LDFLAGS)`.12651266#### `PY_LDFLAGS`12671268По умолчанию: `$(CONFIGURE_LDFLAGS) $(LDFLAGS)`.12691270#### `PY_LDFLAGS_NODIST`12711272По умолчанию: `$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)`.12731274Добавлено в версии 3.8.12751276#### `PY_CORE_LDFLAGS`12771278Флаги компоновщика, используемые для сборки объектных файлов интерпретатора.12791280Добавлено в версии 3.8.12811282Сноски12831284\[[6](https://python-all.ru/3.14/using/configure.html#id14)\]12851286`git clean -fdx` – ещё более радикальный способ «очистить» рабочую копию. Он удаляет все файлы, не известные Git. При поиске ошибок с помощью `git bisect` это [рекомендуется между проверками](https://python-all.ru/3.14/using/configure.html) для гарантии полностью чистой сборки. **Используйте с осторожностью**, так как будут удалены все файлы, не отслеживаемые Git, включая ваши новые, несохранённые наработки.1287