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

configure.md

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

1> **Источник:** https://python-all.ru/3.13/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.13/using/configure.html). [Опциональные возможности C11](https://python-all.ru/3.13/using/configure.html) не требуются.14- В Windows требуется Microsoft Visual Studio 2017 или новее.15- Поддержка [IEEE 754](https://python-all.ru/3.13/using/configure.html) чисел с плавающей запятой и [нечисла (NaN)](https://python-all.ru/3.13/using/configure.html).16- Поддержка потоков.17- OpenSSL 1.1.1 – минимальная версия, а OpenSSL 3.0.18 – рекомендуемая минимальная версия для модулей расширения [`ssl`](https://python-all.ru/3.13/library/ssl.html#module-ssl) и [`hashlib`](https://python-all.ru/3.13/library/hashlib.html#module-hashlib).18- SQLite 3.15.2 для модуля расширения [`sqlite3`](https://python-all.ru/3.13/library/sqlite3.html#module-sqlite3).19- Tcl/Tk 8.5.12 для модуля [`tkinter`](https://python-all.ru/3.13/library/tkinter.html#module-tkinter).20- [libmpdec](https://python-all.ru/3.13/using/configure.html) 2.5.0 для модуля [`decimal`](https://python-all.ru/3.13/library/decimal.html#module-decimal).21- Для повторной генерации скрипта `configure` требуются Autoconf 2.71 и aclocal 1.16.5.2223Изменено в версии 3.1: Теперь требуется Tcl/Tk версии 8.3.1.2425Изменено в версии 3.5: В Windows теперь требуется Visual Studio 2015 или новее. Теперь требуется Tcl/Tk версии 8.4.2627Изменено в версии 3.6: Теперь требуются отдельные возможности C99, такие как функции `<stdint.h>` и `static inline`.2829Изменено в версии 3.7: Теперь требуются поддержка потоков и OpenSSL 1.0.2.3031Изменено в версии 3.10: Теперь требуется OpenSSL 1.1.1. Требуется SQLite 3.7.15.3233Изменено в версии 3.11: Теперь требуются компилятор C11, поддержка IEEE 754 и NaN. В Windows требуется Visual Studio 2017 или новее. Теперь требуется Tcl/Tk версии 8.5.12 для модуля [`tkinter`](https://python-all.ru/3.13/library/tkinter.html#module-tkinter).3435Изменено в версии 3.13: Теперь требуются Autoconf 2.71, aclocal 1.16.5 и SQLite 3.15.2.3637См. также [**PEP 7** «Руководство по стилю C»](https://python-all.ru/3.13/using/configure.html) и [**PEP 11** «Поддержка платформ CPython»](https://python-all.ru/3.13/using/configure.html).3839## 3.2. Сгенерированные файлы4041Чтобы уменьшить зависимости сборки, исходный код Python содержит несколько сгенерированных файлов. Команды для перегенерации всех сгенерированных файлов:4243```sh44make regen-all45make regen-stdlib-module-names46make regen-limited-abi47make regen-configure48```4950Файл `Makefile.pre.in` документирует сгенерированные файлы, их входные данные и используемые инструменты для их перегенерации. Ищите цели make `regen-*`.5152### 3.2.1. Сценарий configure5354Команда `make regen-configure` перегенерирует файл `aclocal.m4` и сценарий `configure` с помощью сценария оболочки `Tools/build/regen-configure.sh`, который использует контейнер Ubuntu для получения тех же версий инструментов и обеспечения воспроизводимого результата.5556Контейнер необязателен, следующую команду можно выполнить локально:5758```sh59autoreconf -ivf -Werror60```6162Сгенерированные файлы могут измениться в зависимости от точных версий `autoconf-archive`, `aclocal` и `pkg-config`.6364## 3.3. Параметры configure6566Выведите список всех параметров сценария `configure` с помощью:6768```sh69./configure --help70```7172См. также `Misc/SpecialBuilds.txt` в дистрибутиве исходного кода Python.7374### 3.3.1. Общие параметры7576#### `--enable-loadable-sqlite-extensions`7778Поддержка загружаемых расширений в модуле расширения `_sqlite` (по умолчанию отключено) модуля [`sqlite3`](https://python-all.ru/3.13/library/sqlite3.html#module-sqlite3).7980См. метод [`sqlite3.Connection.enable_load_extension()`](https://python-all.ru/3.13/library/sqlite3.html#sqlite3.Connection.enable_load_extension) модуля [`sqlite3`](https://python-all.ru/3.13/library/sqlite3.html#module-sqlite3).8182Добавлено в версии 3.6.8384#### `--disable-ipv6`8586Отключить поддержку IPv6 (включена по умолчанию, если поддерживается), см. модуль [`socket`](https://python-all.ru/3.13/library/socket.html#module-socket).8788#### `--enable-big-digits=[15|30]`8990Определить размер в битах цифр Python [`int`](https://python-all.ru/3.13/library/functions.html#int): 15 или 30 бит.9192По умолчанию размер цифр равен 30.9394Определить `PYLONG_BITS_IN_DIGIT` как `15` или `30`.9596См. [`sys.int_info.bits_per_digit`](https://python-all.ru/3.13/library/sys.html#sys.int_info).9798#### `--with-suffix=SUFFIX`99100Установить суффикс исполняемого файла Python равным *SUFFIX*.101102Суффикс по умолчанию: `.exe` в Windows и macOS (`python.exe` исполняемый файл), `.js` в Emscripten node, `.html` в Emscripten browser, `.wasm` в WASI, и пустая строка на других платформах (`python` исполняемый файл).103104Изменено в версии 3.11: Суффикс по умолчанию на платформе WASM – один из `.js`, `.html` или `.wasm`.105106#### `--with-tzpath=<list of absolute paths separated by pathsep>`107108Выбрать путь поиска часового пояса по умолчанию для [`zoneinfo.TZPATH`](https://python-all.ru/3.13/library/zoneinfo.html#zoneinfo.TZPATH). См. [конфигурацию времени компиляции](https://python-all.ru/3.13/library/zoneinfo.html#zoneinfo-data-compile-time-config) модуля [`zoneinfo`](https://python-all.ru/3.13/library/zoneinfo.html#module-zoneinfo).109110По умолчанию: `/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo`.111112См. разделитель путей [`os.pathsep`](https://python-all.ru/3.13/library/os.html#os.pathsep).113114Добавлено в версии 3.9.115116#### `--without-decimal-contextvar`117118Сборка модуля расширения `_decimal` с контекстом, локальным для потока, а не с контекстом, локальным для корутины (по умолчанию). См. модуль [`decimal`](https://python-all.ru/3.13/library/decimal.html#module-decimal).119120См. [`decimal.HAVE_CONTEXTVAR`](https://python-all.ru/3.13/library/decimal.html#decimal.HAVE_CONTEXTVAR) и модуль [`contextvars`](https://python-all.ru/3.13/library/contextvars.html#module-contextvars).121122Добавлено в версии 3.9.123124#### `--with-dbmliborder=<list of backend names>`125126Переопределяет порядок проверки бэкендов БД для модуля [`dbm`](https://python-all.ru/3.13/library/dbm.html#module-dbm).127128Допустимое значение – строка с именами бэкендов, разделённая двоеточиями (`:`):129130- `ndbm`;131- `gdbm`;132- `bdb`.133134#### `--without-c-locale-coercion`135136Отключает приведение локали C к локали на основе UTF-8 (включено по умолчанию).137138Не определять макрос `PY_COERCE_C_LOCALE`.139140См. [`PYTHONCOERCECLOCALE`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONCOERCECLOCALE) и [**PEP 538**](https://python-all.ru/3.13/using/configure.html).141142#### `--without-freelists`143144Отключить все freelists, кроме синглтона пустого кортежа.145146Добавлено в версии 3.12.147148#### `--with-platlibdir=DIRNAME`149150Имя каталога библиотек Python (по умолчанию `lib`).151152Fedora и SuSE используют `lib64` на 64-разрядных платформах.153154См. [`sys.platlibdir`](https://python-all.ru/3.13/library/sys.html#sys.platlibdir).155156Добавлено в версии 3.9.157158#### `--with-wheel-pkg-dir=PATH`159160Каталог пакетов wheel, используемых модулем [`ensurepip`](https://python-all.ru/3.13/library/ensurepip.html#module-ensurepip) (по умолчанию отсутствует).161162Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог `/usr/share/python-wheels/` и не устанавливает пакет `ensurepip._bundled`.163164Добавлено в версии 3.10.165166#### `--with-pkg-config=[check|yes|no]`167168Должен ли configure использовать **pkg-config** для обнаружения зависимостей сборки.169170- `check` (по умолчанию): **pkg-config** необязателен171- `yes`: **pkg-config** обязателен172- `no`: configure не использует **pkg-config**, даже если он присутствует173174Добавлено в версии 3.12.175176#### `--enable-pystats`177178Включает сбор внутренней статистики производительности Python.179180По умолчанию сбор статистики выключен. Используйте команду `python3 -X pystats` или установите переменную окружения `PYTHONSTATS=1`, чтобы включить сбор статистики при запуске Python.181182При выходе из Python выгружает статистику, если сбор статистики был включён и не очищен.183184Эффекты:185186- Добавляет опцию командной строки [`-X pystats`](https://python-all.ru/3.13/using/cmdline.html#cmdoption-X).187- Добавляет переменную окружения `PYTHONSTATS`.188- Определяет макрос `Py_STATS`.189- Добавляет функции в модуль [`sys`](https://python-all.ru/3.13/library/sys.html#module-sys):190191  - `sys._stats_on()`: Включает сбор статистики.192  - `sys._stats_off()`: Выключает сбор статистики.193  - `sys._stats_clear()`: Очищает статистику.194  - `sys._stats_dump()`: Сбрасывает статистику в файл и очищает её.195196Статистика будет сброшена в произвольный (вероятно, уникальный) файл в\\n`/tmp/py_stats/` (Unix) или `C:\temp\py_stats\` (Windows). Если этот\\nкаталог не существует, результаты будут выведены в stderr.197198Используйте `Tools/scripts/summarize_stats.py` для чтения статистики.199200Статистика:201202- Код операции:203204  - Специализация: успех, неудача, попадание, отложено, промах, деоптимизация, сбои;205  - Счётчик выполнения;206  - Счётчик пар.207- Вызов:208209  - Встроенные вызовы Python;210  - Вызовы PyEval;211  - Помещено фреймов;212  - Создано объектов фреймов;213  - Вызовы eval: векторный, генераторный, устаревший, функция VECTORCALL, сборка класса, слот, функция “ex”, API, метод.214- Объект:215216  - incref и decref;217  - интерпретатор incref и decref;218  - выделения: все, 512 байт, 4 КиБ, большие;219  - освобождение;220  - в/из списков свободных блоков;221  - словарь материализован/дематериализован;222  - кэш типов;223  - попытки оптимизации;224  - трассы оптимизации создано/выполнено;225  - выполнено uops.226- Сборщик мусора:227228  - Сборок мусора;229  - Посещено объектов;230  - Собрано объектов.231232Добавлено в версии 3.12.233234#### `--disable-gil`235236Включает **экспериментальную** поддержку запуска Python без [глобальной блокировки интерпретатора](https://python-all.ru/3.13/glossary.html#term-global-interpreter-lock) (GIL): сборка со свободной многопоточностью.237238Определяет макрос `Py_GIL_DISABLED` и добавляет `"t"` в\\n[`sys.abiflags`](https://python-all.ru/3.13/library/sys.html#sys.abiflags).239240Подробнее см. [Free-threaded CPython](https://python-all.ru/3.13/whatsnew/3.13.html#whatsnew313-free-threaded-cpython).241242Добавлено в версии 3.13.243244#### `--enable-experimental-jit=[no|yes|yes-off|interpreter]`245246Указывает способ интеграции [JIT-компилятора](https://python-all.ru/3.13/whatsnew/3.13.html#whatsnew313-jit-compiler).247248- `no` – сборка интерпретатора без JIT.249- `yes` – сборка интерпретатора с JIT.250- `yes-off` – сборка интерпретатора с JIT, но отключённым по умолчанию.251- `interpreter` – сборка интерпретатора без JIT, но с включённым интерпретатором второго уровня (tier 2).252253По соглашению, `--enable-experimental-jit` – это сокращение для `--enable-experimental-jit=yes`.254255> **Примечание**256>257> При сборке CPython с включённым JIT убедитесь, что в системе установлен Python 3.11 или новее.258259Добавлено в версии 3.13.260261#### `PKG_CONFIG`262263Путь к утилите `pkg-config`.264265#### `PKG_CONFIG_LIBDIR`266267#### `PKG_CONFIG_PATH`268269Параметры `pkg-config`.270271### 3.3.2. Параметры компилятора C272273#### `CC`274275Команда компилятора C.276277#### `CFLAGS`278279Флаги компилятора C.280281#### `CPP`282283Команда препроцессора C.284285#### `CPPFLAGS`286287Флаги препроцессора C, например `-Iinclude_dir`.288289### 3.3.3. Параметры компоновщика290291#### `LDFLAGS`292293Флаги компоновщика, например `-Llibrary_directory`.294295#### `LIBS`296297Библиотеки для передачи компоновщику, например `-llibrary`.298299#### `MACHDEP`300301Имя для машинно-зависимых файлов библиотек.302303### 3.3.4. Параметры для сторонних зависимостей304305Добавлено в версии 3.12.306307#### `BZIP2_CFLAGS`308309#### `BZIP2_LIBS`310311Флаги компилятора C и компоновщика для связывания Python с `libbz2`, используемые модулем [`bz2`](https://python-all.ru/3.13/library/bz2.html#module-bz2), переопределяющие `pkg-config`.312313#### `CURSES_CFLAGS`314315#### `CURSES_LIBS`316317Флаги компилятора C и компоновщика для `libncurses` или `libncursesw`, используемые модулем [`curses`](https://python-all.ru/3.13/library/curses.html#module-curses), переопределяющие `pkg-config`.318319#### `GDBM_CFLAGS`320321#### `GDBM_LIBS`322323Флаги компилятора C и компоновщика для `gdbm`.324325#### `LIBB2_CFLAGS`326327#### `LIBB2_LIBS`328329Флаги компилятора C и компоновщика для `libb2` ([BLAKE2](https://python-all.ru/3.13/library/hashlib.html#hashlib-blake2)), используемые модулем [`hashlib`](https://python-all.ru/3.13/library/hashlib.html#module-hashlib), переопределяют `pkg-config`.330331#### `LIBEDIT_CFLAGS`332333#### `LIBEDIT_LIBS`334335Флаги компилятора C и компоновщика для `libedit`, используемые модулем [`readline`](https://python-all.ru/3.13/library/readline.html#module-readline), переопределяющие `pkg-config`.336337#### `LIBFFI_CFLAGS`338339#### `LIBFFI_LIBS`340341Флаги компилятора C и компоновщика для `libffi`, используемые модулем [`ctypes`](https://python-all.ru/3.13/library/ctypes.html#module-ctypes), переопределяющие `pkg-config`.342343#### `LIBMPDEC_CFLAGS`344345#### `LIBMPDEC_LIBS`346347Флаги компилятора C и компоновщика для `libmpdec`, используемые модулем [`decimal`](https://python-all.ru/3.13/library/decimal.html#module-decimal), переопределяющие `pkg-config`.348349> **Примечание**350>351> Эти переменные окружения не действуют, если не указан [`--with-system-libmpdec`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-system-libmpdec).352353#### `LIBLZMA_CFLAGS`354355#### `LIBLZMA_LIBS`356357Флаги компилятора C и компоновщика для `liblzma`, используемые модулем [`lzma`](https://python-all.ru/3.13/library/lzma.html#module-lzma), переопределяющие `pkg-config`.358359#### `LIBREADLINE_CFLAGS`360361#### `LIBREADLINE_LIBS`362363Флаги компилятора C и компоновщика для `libreadline`, используемые модулем [`readline`](https://python-all.ru/3.13/library/readline.html#module-readline), переопределяющие `pkg-config`.364365#### `LIBSQLITE3_CFLAGS`366367#### `LIBSQLITE3_LIBS`368369Флаги компилятора C и компоновщика для `libsqlite3`, используемые модулем [`sqlite3`](https://python-all.ru/3.13/library/sqlite3.html#module-sqlite3), переопределяющие `pkg-config`.370371#### `LIBUUID_CFLAGS`372373#### `LIBUUID_LIBS`374375Флаги компилятора C и компоновщика для `libuuid`, используемые модулем [`uuid`](https://python-all.ru/3.13/library/uuid.html#module-uuid), переопределяющие `pkg-config`.376377#### `PANEL_CFLAGS`378379#### `PANEL_LIBS`380381Флаги компилятора C и компоновщика для PANEL, переопределяющие `pkg-config`.382383Флаги компилятора C и компоновщика для `libpanel` или `libpanelw`, используемые модулем [`curses.panel`](https://python-all.ru/3.13/library/curses.panel.html#module-curses.panel), переопределяющие `pkg-config`.384385#### `TCLTK_CFLAGS`386387#### `TCLTK_LIBS`388389Флаги компилятора C и компоновщика для TCLTK, переопределяющие `pkg-config`.390391#### `ZLIB_CFLAGS`392393#### `ZLIB_LIBS`394395Флаги компилятора C и компоновщика для `libzlib`, используемые модулем [`gzip`](https://python-all.ru/3.13/library/gzip.html#module-gzip), переопределяющие `pkg-config`.396397### 3.3.5. Параметры WebAssembly398399#### `--with-emscripten-target=[browser|node]`400401Устанавливает вариант сборки для `wasm32-emscripten`.402403- `browser` (по умолчанию): предзагружать минимальную стандартную библиотеку, по умолчанию MEMFS.404- `node`: поддержка NODERAWFS и pthread.405406Добавлено в версии 3.12.407408#### `--enable-wasm-dynamic-linking`409410Включить поддержку динамической компоновки для WASM.411412Динамическая компоновка включает `dlopen`. Размер исполняемого файла увеличивается из-за ограниченного удаления мёртвого кода и дополнительных возможностей.413414Добавлено в версии 3.12.415416#### `--enable-wasm-pthreads`417418Включить поддержку pthreads для WASM.419420Добавлено в версии 3.12.421422### 3.3.6. Параметры установки423424#### `--prefix=PREFIX`425426Устанавливает архитектурно-независимые файлы в PREFIX. В Unix по умолчанию используется `/usr/local`.427428Это значение можно получить во время выполнения с помощью [`sys.prefix`](https://python-all.ru/3.13/library/sys.html#sys.prefix).429430Например, можно использовать `--prefix="$HOME/.local/"` для установки Python в домашний каталог.431432#### `--exec-prefix=EPREFIX`433434Устанавливает архитектурно-зависимые файлы в EPREFIX, по умолчанию [`--prefix`](https://python-all.ru/3.13/using/configure.html#cmdoption-prefix).435436Это значение можно получить во время выполнения с помощью [`sys.exec_prefix`](https://python-all.ru/3.13/library/sys.html#sys.exec_prefix).437438#### `--disable-test-modules`439440Не собирать и не устанавливать тестовые модули, такие как пакет [`test`](https://python-all.ru/3.13/library/test.html#module-test) или модуль расширения `_testcapi` (собирается и устанавливается по умолчанию).441442Добавлено в версии 3.10.443444#### `--with-ensurepip=[upgrade|install|no]`445446Выбирает команду [`ensurepip`](https://python-all.ru/3.13/library/ensurepip.html#module-ensurepip), запускаемую при установке Python:447448- `upgrade` (по умолчанию): запустить команду `python -m ensurepip --altinstall --upgrade` .449- `install`: запустить команду `python -m ensurepip --altinstall`;450- `no`: не запускать ensurepip;451452Добавлено в версии 3.6.453454### 3.3.7. Параметры производительности455456Для достижения максимальной производительности рекомендуется настраивать Python с помощью `--enable-optimizations --with-lto` (PGO + LTO). Экспериментальный флаг `--enable-bolt` также можно использовать для повышения производительности.457458#### `--enable-optimizations`459460Включает профильную оптимизацию (PGO) с помощью [`PROFILE_TASK`](https://python-all.ru/3.13/using/configure.html#envvar-PROFILE_TASK) (по умолчанию отключено).461462Компилятору Clang требуется программа `llvm-profdata` для PGO. На macOS она также требуется GCC: GCC – это просто псевдоним Clang на macOS.463464Также отключает семантическое переопределение символов в libpython, если используются `--enable-shared` и GCC: добавьте `-fno-semantic-interposition` в флаги компилятора и компоновщика.465466> **Примечание**467>468> В процессе сборки могут появляться предупреждения компилятора о недоступности данных профиля для некоторых исходных файлов. Эти предупреждения безвредны, так как при сборе данных профиля выполняется лишь часть кода. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив `-Wno-profile-instr-unprofiled` к [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS).469470Добавлено в версии 3.6.471472Изменено в версии 3.10: Используйте `-fno-semantic-interposition` в GCC.473474#### `PROFILE_TASK`475476Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.477478По умолчанию: `-m test --pgo --timeout=$(TESTTIMEOUT)`.479480Добавлено в версии 3.8.481482Изменено в версии 3.13: Сбой задачи больше не игнорируется без уведомления.483484#### `--with-lto=[full|thin|no|yes]`485486Включает оптимизацию во время компоновки (LTO) в любой сборке (по умолчанию отключено).487488Компилятору Clang требуется `llvm-ar` для LTO (`ar` в macOS), а также компоновщик, поддерживающий LTO (`ld.gold` или `lld`).489490Добавлено в версии 3.6.491492Добавлено в версии 3.11: Для использования функции ThinLTO используйте `--with-lto=thin` в Clang.493494Изменено в версии 3.12: Используйте ThinLTO в качестве политики оптимизации по умолчанию в Clang, если компилятор поддерживает этот флаг.495496#### `--enable-bolt`497498Включает использование [оптимизатора бинарных файлов после компоновки BOLT](https://python-all.ru/3.13/using/configure.html) (по умолчанию отключено).499500BOLT является частью проекта LLVM, но не всегда входит в их бинарные дистрибутивы. Этот флаг требует наличия `llvm-bolt` и `merge-fdata`.501502BOLT – всё ещё относительно новый проект, поэтому этот флаг пока следует считать экспериментальным. Поскольку этот инструмент работает с машинным кодом, его успех зависит от комбинации окружения сборки, других аргументов конфигурации оптимизации и архитектуры CPU, и не все комбинации поддерживаются. Известно, что версии BOLT до LLVM 16 аварийно завершаются в некоторых сценариях. Настоятельно рекомендуется использовать LLVM 16 или новее для оптимизации BOLT.503504Переменные `BOLT_INSTRUMENT_FLAGS` и `BOLT_APPLY_FLAGS` **configure** можно определить, чтобы переопределить набор аргументов по умолчанию для **llvm-bolt** для инструментирования и применения данных BOLT к бинарным файлам соответственно.505506Добавлено в версии 3.12.507508#### `BOLT_APPLY_FLAGS`509510Аргументы для `llvm-bolt` при создании [оптимизированного BOLT бинарного файла](https://python-all.ru/3.13/using/configure.html).511512Добавлено в версии 3.12.513514#### `BOLT_INSTRUMENT_FLAGS`515516Аргументы для `llvm-bolt` при инструментировании бинарных файлов.517518Добавлено в версии 3.12.519520#### `--with-computed-gotos`521522Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).523524#### `--without-mimalloc`525526Отключает быстрый распределитель [mimalloc](https://python-all.ru/3.13/c-api/memory.html#mimalloc) (включён по умолчанию).527528См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONMALLOC).529530#### `--without-pymalloc`531532Отключает специализированный распределитель памяти Python [pymalloc](https://python-all.ru/3.13/c-api/memory.html#pymalloc) (включён по умолчанию).533534См. также переменную окружения [`PYTHONMALLOC`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONMALLOC).535536#### `--without-doc-strings`537538Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.539540Не определять макрос `WITH_DOC_STRINGS`.541542См. макрос `PyDoc_STRVAR()`.543544#### `--enable-profiling`545546Включает профилирование кода на уровне C с помощью `gprof` (отключено по умолчанию).547548#### `--with-strict-overflow`549550Добавляет `-fstrict-overflow` в флаги компилятора C (по умолчанию добавляется `-fno-strict-overflow`).551552### 3.3.8. Отладочная сборка Python553554Отладочная сборка – это Python, собранный с опцией конфигурации [`--with-pydebug`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-pydebug).555556Эффекты отладочной сборки:557558- Показывать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле [`warnings`](https://python-all.ru/3.13/library/warnings.html#module-warnings).559- Добавляет `d` в [`sys.abiflags`](https://python-all.ru/3.13/library/sys.html#sys.abiflags).560- Добавляет функцию `sys.gettotalrefcount()`.561- Добавляет опцию командной строки [`-X showrefcount`](https://python-all.ru/3.13/using/cmdline.html#cmdoption-X).562- Добавляет опцию командной строки [`-d`](https://python-all.ru/3.13/using/cmdline.html#cmdoption-d) и переменную окружения [`PYTHONDEBUG`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONDEBUG) для отладки парсера.563- Добавляет поддержку переменной `__lltrace__`: включение низкоуровневой трассировки в цикле выполнения байт-кода, если переменная определена.564- Устанавливает [отладочные привязки на распределители памяти](https://python-all.ru/3.13/c-api/memory.html#default-memory-allocators) для обнаружения переполнения буфера и других ошибок памяти.565- Определяет макросы `Py_DEBUG` и `Py_REF_DEBUG`.566- Добавляет проверки времени выполнения: код, окружённый `#ifdef Py_DEBUG` и `#endif`. Включает утверждения `assert(...)` и `_PyObject_ASSERT(...)`: не устанавливайте макрос `NDEBUG` (см. также опцию конфигурации [`--with-assertions`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-assertions)). Основные проверки времени выполнения:567568  - Добавляет проверки корректности аргументов функций.569  - Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неинициализированных объектов.570  - Гарантирует, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.571  - Проверяется, что функции деаллокации не изменяют текущее исключение.572  - Сборщик мусора (функция [`gc.collect()`](https://python-all.ru/3.13/library/gc.html#gc.collect)) выполняет базовые проверки корректности объектов.573  - Макрос `Py_SAFE_DOWNCAST()` проверяет целочисленное переполнение (underflow и overflow) при понижающем приведении от широких типов к узким.574575См. также [режим разработки Python](https://python-all.ru/3.13/library/devmode.html#devmode) и опцию конфигурации [`--with-trace-refs`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-trace-refs).576577Изменено в версии 3.8: Релизные сборки теперь совместимы по ABI с отладочными: определение макроса `Py_DEBUG` больше не подразумевает макрос `Py_TRACE_REFS` (см. опцию [`--with-trace-refs`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-trace-refs)). Однако отладочные сборки по-прежнему экспортируют больше символов, чем релизные, и код, собранный для отладочной сборки, не обязательно совместим с релизной.578579### 3.3.9. Отладочные опции580581#### `--with-pydebug`582583[Собрать Python в отладочном режиме](https://python-all.ru/3.13/using/configure.html#debug-build): определяет макрос `Py_DEBUG` (отключён по умолчанию).584585#### `--with-trace-refs`586587Включает отслеживание ссылок для целей отладки (отключено по умолчанию).588589Эффекты:590591- Определяет макрос `Py_TRACE_REFS`.592- Добавляет функцию [`sys.getobjects()`](https://python-all.ru/3.13/library/sys.html#sys.getobjects).593- Добавляет переменную окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONDUMPREFS).594595Переменная окружения [`PYTHONDUMPREFS`](https://python-all.ru/3.13/using/cmdline.html#envvar-PYTHONDUMPREFS) может использоваться для дампа объектов и счётчиков ссылок, остающихся активными при завершении Python.596597[Статически размещённые объекты](https://python-all.ru/3.13/c-api/typeobj.html#static-types) не отслеживаются.598599Добавлено в версии 3.8.600601Изменено в версии 3.13: Эта сборка теперь совместима по ABI с релизной сборкой и [отладочной сборкой](https://python-all.ru/3.13/using/configure.html#debug-build).602603#### `--with-assertions`604605Сборка с включёнными C-утверждениями (по умолчанию нет): `assert(...);` и `_PyObject_ASSERT(...);`.606607Если установлен, макрос `NDEBUG` не определяется в переменной компилятора [`OPT`](https://python-all.ru/3.13/using/configure.html#envvar-OPT).608609См. также опцию [`--with-pydebug`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-pydebug) ([отладочная сборка](https://python-all.ru/3.13/using/configure.html#debug-build)), которая также включает утверждения.610611Добавлено в версии 3.6.612613#### `--with-valgrind`614615Включить поддержку Valgrind (по умолчанию нет).616617#### `--with-dtrace`618619Включить поддержку DTrace (по умолчанию нет).620621См. [Инструментирование CPython с помощью DTrace и SystemTap](https://python-all.ru/3.13/howto/instrumentation.html#instrumentation).622623Добавлено в версии 3.6.624625#### `--with-address-sanitizer`626627Включить детектор ошибок памяти AddressSanitizer, `asan` (по умолчанию нет). Чтобы улучшить возможности обнаружения ASan, можно также объединить это с [`--without-pymalloc`](https://python-all.ru/3.13/using/configure.html#cmdoption-without-pymalloc) для отключения специализированного аллокатора малых объектов, чьи выделения не отслеживаются ASan.628629Добавлено в версии 3.6.630631#### `--with-memory-sanitizer`632633Включить детектор ошибок выделения памяти MemorySanitizer, `msan` (по умолчанию нет).634635Добавлено в версии 3.6.636637#### `--with-undefined-behavior-sanitizer`638639Включить детектор неопределённого поведения UndefinedBehaviorSanitizer, `ubsan` (по умолчанию нет).640641Добавлено в версии 3.6.642643#### `--with-thread-sanitizer`644645Включает детектор гонок данных ThreadSanitizer, `tsan` (по умолчанию выключено).646647Добавлено в версии 3.13.648649### 3.3.10. Параметры компоновщика650651#### `--enable-shared`652653Включает сборку разделяемой библиотеки Python: `libpython` (по умолчанию выключено).654655#### `--without-static-libpython`656657Не собирать `libpythonMAJOR.MINOR.a` и не устанавливать `python.o` (собирается и устанавливается по умолчанию).658659Добавлено в версии 3.10.660661### 3.3.11. Параметры библиотек662663#### `--with-libs='lib1 ...'`664665Линковаться с дополнительными библиотеками (по умолчанию нет).666667#### `--with-system-expat`668669Собирать модуль `pyexpat`, используя установленную библиотеку `expat` (по умолчанию нет).670671#### `--with-system-libmpdec`672673Собирать модуль расширения `_decimal`, используя установленную библиотеку `mpdecimal` , см. модуль [`decimal`](https://python-all.ru/3.13/library/decimal.html#module-decimal) (по умолчанию включено).674675Добавлено в версии 3.3.676677Изменено в версии 3.13: По умолчанию используется установленная библиотека `mpdecimal`.678679Устарело с версии 3.13, будет удалено в версии 3.16: Копия исходных кодов библиотеки `mpdecimal` больше не будет распространяться с Python 3.16.680681> **См. также**682>683> [`LIBMPDEC_CFLAGS`](https://python-all.ru/3.13/using/configure.html#cmdoption-arg-LIBMPDEC_CFLAGS) и [`LIBMPDEC_LIBS`](https://python-all.ru/3.13/using/configure.html#cmdoption-arg-LIBMPDEC_LIBS).684685#### `--with-readline=readline|editline`686687Назначить библиотеку-бэкенд для модуля [`readline`](https://python-all.ru/3.13/library/readline.html#module-readline).688689- readline: использовать readline в качестве бэкенда.690- editline: использовать editline в качестве бэкенда.691692Добавлено в версии 3.10.693694#### `--without-readline`695696Не собирать модуль [`readline`](https://python-all.ru/3.13/library/readline.html#module-readline) (собирается по умолчанию).697698Не определять макрос `HAVE_LIBREADLINE`.699700Добавлено в версии 3.10.701702#### `--with-libm=STRING`703704Переопределить математическую библиотеку `libm` на *STRING* (по умолчанию зависит от системы).705706#### `--with-libc=STRING`707708Переопределить библиотеку C `libc` на *STRING* (по умолчанию зависит от системы).709710#### `--with-openssl=DIR`711712Корневой каталог OpenSSL.713714Добавлено в версии 3.7.715716#### `--with-openssl-rpath=[no|auto|DIR]`717718Задать каталог библиотек времени выполнения (rpath) для библиотек OpenSSL:719720- `no` (по умолчанию): не устанавливать rpath;721- `auto`: автоматически определять rpath из [`--with-openssl`](https://python-all.ru/3.13/using/configure.html#cmdoption-with-openssl) и `pkg-config`;722- *DIR*: указать явный rpath.723724Добавлено в версии 3.10.725726### 3.3.12. Параметры безопасности727728#### `--with-hash-algorithm=[fnv|siphash13|siphash24]`729730Выберите алгоритм хеширования для использования в `Python/pyhash.c`:731732- `siphash13` (по умолчанию);733- `siphash24`;734- `fnv`.735736Добавлено в версии 3.4.737738Добавлено в версии 3.11: `siphash13` добавлен и стал новым значением по умолчанию.739740#### `--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2`741742Встроенные хеш-модули:743744- `md5`;745- `sha1`;746- `sha256`;747- `sha512`;748- `sha3` (с shake);749- `blake2`.750751Добавлено в версии 3.9.752753#### `--with-ssl-default-suites=[python|openssl|STRING]`754755Переопределить строку наборов шифров OpenSSL по умолчанию:756757- `python` (по умолчанию): использовать предпочтительный выбор Python;758- `openssl`: оставить настройки OpenSSL по умолчанию без изменений;759- *STRING*: использовать произвольную строку760761См. модуль [`ssl`](https://python-all.ru/3.13/library/ssl.html#module-ssl).762763Добавлено в версии 3.7.764765Изменено в версии 3.10: Настройки `python` и *STRING* также устанавливают TLS 1.2 в качестве минимальной версии протокола.766767### 3.3.13. Параметры macOS768769См. [Mac/README.rst](https://python-all.ru/src/3.13/Mac/README.rst).770771#### `--enable-universalsdk`772773#### `--enable-universalsdk=SDKDIR`774775Создание универсальной сборки двоичного файла. *SDKDIR* указывает, какой macOS SDK следует использовать для сборки (по умолчанию нет).776777#### `--enable-framework`778779#### `--enable-framework=INSTALLDIR`780781Создаёт Python.framework вместо традиционной установки в Unix. Необязательный *INSTALLDIR* определяет путь установки (по умолчанию – нет).782783#### `--with-universal-archs=ARCH`784785Определяет тип универсального бинарного файла, который будет создан. Этот параметр работает, только если указан [`--enable-universalsdk`](https://python-all.ru/3.13/using/configure.html#cmdoption-enable-universalsdk).786787Варианты:788789- `universal2` (x86-64 и arm64);790- `32-bit` (PPC и i386);791- `64-bit` (PPC64 и x86-64);792- `3-way` (i386, PPC и x86-64);793- `intel` (i386 и x86-64);794- `intel-32` (i386);795- `intel-64` (x86-64);796- `all` (PPC, i386, PPC64 и x86-64).797798Обратите внимание: значения этого параметра конфигурации *не* совпадают с идентификаторами, используемыми для универсальных бинарных колец (wheels) в macOS. Подробнее о [тегах совместимости платформы упаковки, используемых в macOS,](https://python-all.ru/3.13/using/configure.html) см. в Python Packaging User Guide.799800#### `--with-framework-name=FRAMEWORK`801802Задаёт имя для python framework в macOS. Работает только при указанном [`--enable-framework`](https://python-all.ru/3.13/using/configure.html#cmdoption-enable-framework) (по умолчанию: `Python`).803804#### `--with-app-store-compliance`805806#### `--with-app-store-compliance=PATCH-FILE`807808Стандартная библиотека Python содержит строки, которые, как известно, вызывают ошибки автоматических инструментов проверки при отправке на распространение через App Store macOS и iOS. Если этот параметр включён, будет применён список исправлений, которые устраняют несоответствия требованиям магазинов приложений. Можно также указать собственный файл исправлений. По умолчанию этот параметр отключён.809810Добавлено в версии 3.13.811812### 3.3.14. Параметры iOS813814См. [iOS/README.rst](https://python-all.ru/src/3.13/iOS/README.rst).815816#### `--enable-framework=INSTALLDIR`817818Создаёт Python.framework. В отличие от macOS, аргумент *INSTALLDIR*, указывающий путь установки, обязателен.819820#### `--with-framework-name=FRAMEWORK`821822Задаёт имя для framework (по умолчанию: `Python`).823824### 3.3.15. Параметры кросс-компиляции825826Кросс-компиляция (также известная как кросс-сборка) используется для сборки Python под другую архитектуру CPU или платформу. Для кросс-компиляции требуется интерпретатор Python для платформы сборки. Версия Python для сборки должна совпадать с версией Python для целевой платформы, скомпилированной кросс-компилятором.827828#### `--build=BUILD`829830настройка для сборки на платформе BUILD, обычно определяется с помощью **config.guess**.831832#### `--host=HOST`833834кросс-компиляция для сборки программ, выполняемых на HOST (целевая платформа)835836#### `--with-build-python=path/to/python`837838путь к `python` двоичному файлу для кросс-компиляции839840Добавлено в версии 3.12.841842#### `CONFIG_SITE=file`843844Переменная окружения, указывающая на файл с переопределениями configure.845846Пример файла *config.site*:847848```ini849# config.site-aarch64850ac_cv_buggy_getaddrinfo=no851ac_cv_file__dev_ptmx=yes852ac_cv_file__dev_ptc=no853```854855#### `HOSTRUNNER`856857Программа, запускающая CPython на хост-платформе для кросс-компиляции.858859Добавлено в версии 3.12.860861Пример кросс-компиляции:862863```sh864CONFIG_SITE=config.site-aarch64 ../configure \865    --build=x86_64-pc-linux-gnu \866    --host=aarch64-unknown-linux-gnu \867    --with-build-python=../x86_64/python868```869870## 3.4. Система сборки Python871872### 3.4.1. Основные файлы системы сборки873874- `configure.ac` =\> `configure`;875- `Makefile.pre.in` =\> `Makefile` (создаётся с помощью `configure`);876- `pyconfig.h` (создаётся с помощью `configure`);877- `Modules/Setup`: расширения на C, собираемые Makefile с помощью `Module/makesetup` shell-скрипта;878879### 3.4.2. Основные этапы сборки880881- C-файлы (`.c`) компилируются в объектные файлы (`.o`).882- Статическая библиотека `libpython` (`.a`) создаётся из объектных файлов.883- `python.o` и статическая библиотека `libpython` компонуются в итоговую программу `python`.884- Расширения на C собираются с помощью Makefile (см. `Modules/Setup`).885886### 3.4.3. Основные цели Makefile887888#### 3.4.3.1. make889890В большинстве случаев при пересборке после редактирования кода или обновления локальной копии из вышестоящего репозитория достаточно просто выполнить `make`, которая (согласно семантике Make) собирает цель по умолчанию – первую, определённую в Makefile. По традиции (в том числе в проекте CPython) это обычно цель `all`. Скрипт `configure` разворачивает переменную `autoconf`, `@DEF_MAKE_ALL_RULE@`, чтобы точно описать, какие цели будет собирать `make all`. Доступны три варианта:891892- `profile-opt` (настроено с помощью `--enable-optimizations`)893- `build_wasm` (настроено с помощью `--with-emscripten-target`)894- `build_all` (настроено без явного использования других вариантов)895896В зависимости от последних изменений исходных файлов Make пересобирает все цели (объектные файлы и исполняемые), которые считает устаревшими, включая повторный запуск `configure` при необходимости. Однако зависимости между исходниками и целями многочисленны и поддерживаются вручную, поэтому иногда Make не располагает всей информацией, необходимой для правильного обнаружения всех целей, требующих пересборки. В зависимости от того, какие цели не были пересобраны, могут возникнуть различные проблемы. Если возникают проблемы со сборкой или тестированием, которые иначе не объяснить, `make clean && make` должен решить большинство проблем с зависимостями, хотя время сборки при этом увеличится.897898#### 3.4.3.2. make platform899900Собрать программу `python`, но не собирать модули расширения стандартной библиотеки. В результате создаётся файл `platform`, содержащий одну строку с описанием платформы сборки, например `macosx-14.3-arm64-3.12` или `linux-x86_64-3.13`.901902#### 3.4.3.3. make profile-opt903904Собрать Python с профильной оптимизацией (PGO). Чтобы сделать это целью по умолчанию для команды `make`, можно использовать параметр configure [`--enable-optimizations`](https://python-all.ru/3.13/using/configure.html#cmdoption-enable-optimizations) (`make all` или просто `make`).905906#### 3.4.3.4. make clean907908Удалить собранные файлы.909910#### 3.4.3.5. make distclean911912Помимо работы, выполненной `make clean`, удалить файлы, созданные скриптом configure. Перед повторной сборкой потребуется запустить `configure`. [\[1\]](https://python-all.ru/3.13/using/configure.html#id5)913914#### 3.4.3.6. make install915916Собрать цель `all` и установить Python.917918#### 3.4.3.7. make test919920Собрать цель `all` и запустить набор тестов Python с опцией `--fast-ci`. Переменные:921922- `TESTOPTS`: дополнительные параметры командной строки regrtest.923- `TESTPYTHONOPTS`: дополнительные параметры командной строки Python.924- `TESTTIMEOUT`: тайм-аут в секундах (по умолчанию: 10 минут).925926#### 3.4.3.8. make buildbottest927928Это похоже на `make test`, но использует опцию `--slow-ci` и тайм-аут по умолчанию 20 минут вместо опции `--fast-ci`.929930#### 3.4.3.9. make regen-all931932Перегенерировать (почти) все сгенерированные файлы. Они включают (но не ограничиваются) случаи байткода и файл генератора парсера. `make regen-stdlib-module-names` и `autoconf` должны быть запущены отдельно для остальных [сгенерированных файлов](https://python-all.ru/3.13/using/configure.html#generated-files).933934### 3.4.4. Расширения C935936Некоторые расширения C собираются как встроенные модули, например модуль `sys`. Они собираются с определённым макросом `Py_BUILD_CORE_BUILTIN`. Встроенные модули не имеют атрибута `__file__`:937938```pycon939>>> import sys940>>> sys941<module 'sys' (built-in)>942>>> sys.__file__943Traceback (most recent call last):944  File "<stdin>", line 1, in <module>945AttributeError: module 'sys' has no attribute '__file__'946```947948Другие расширения C собираются как динамические библиотеки, например модуль `_asyncio`. Они собираются с определённым макросом `Py_BUILD_CORE_MODULE`. Пример на Linux x86-64:949950```pycon951>>> import _asyncio952>>> _asyncio953<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>954>>> _asyncio.__file__955'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'956```957958`Modules/Setup` используется для генерации целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера `*shared*`, собираются как динамические библиотеки.959960Макросы `PyAPI_FUNC()`, `PyAPI_DATA()` и [`PyMODINIT_FUNC`](https://python-all.ru/3.13/c-api/intro.html#c.PyMODINIT_FUNC) из `Include/exports.h` определяются по-разному в зависимости от того, определён ли макрос `Py_BUILD_CORE_MODULE`:961962- Используйте `Py_EXPORTED_SYMBOL`, если `Py_BUILD_CORE_MODULE` определён.963- В противном случае используйте `Py_IMPORTED_SYMBOL`.964965Если макрос `Py_BUILD_CORE_BUILTIN` по ошибке используется для расширения C, собранного как разделяемая библиотека, его функция `PyInit_xxx()` не экспортируется, что вызывает [`ImportError`](https://python-all.ru/3.13/library/exceptions.html#ImportError) при импорте.966967## 3.5. Флаги компилятора и компоновщика968969Параметры, задаваемые сценарием `./configure` и переменными окружения, и используемые `Makefile`.970971### 3.5.1. Флаги препроцессора972973#### `CONFIGURE_CPPFLAGS`974975Значение переменной [`CPPFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CPPFLAGS), передаваемое сценарию `./configure`.976977Добавлено в версии 3.6.978979#### `CPPFLAGS`980981(Objective) C/C++ флаги препроцессора, например `-Iinclude_dir`, если заголовочные файлы находятся в нестандартном каталоге *include\_dir*.982983И [`CPPFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.984985#### `BASECPPFLAGS`986987Добавлено в версии 3.4.988989#### `PY_CPPFLAGS`990991Дополнительные флаги препроцессора, добавляемые при сборке объектных файлов интерпретатора.992993По умолчанию: `$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)`.994995Добавлено в версии 3.2.996997### 3.5.2. Флаги компилятора998999#### `CC`10001001Команда компилятора C.10021003Пример: `gcc -pthread`.10041005#### `CXX`10061007Команда компилятора C++.10081009Пример: `g++ -pthread`.10101011#### `CFLAGS`10121013Флаги компилятора C.10141015#### `CFLAGS_NODIST`10161017[`CFLAGS_NODIST`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS_NODIST) используется для сборки интерпретатора и расширений C из стандартной библиотеки. Используйте его, когда флаг компилятора *не* должен быть частью [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS) после установки Python ([gh-65320](https://python-all.ru/3.13/using/configure.html)).10181019В частности, [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS) не должен содержать:10201021- флаг компилятора `-I` (для задания пути поиска включаемых файлов). Флаги `-I` обрабатываются слева направо, и любые флаги из [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS) будут иметь приоритет над `-I` флагами, предоставленными пользователем и пакетами.1022- флаги усиления защиты, такие как `-Werror`, поскольку дистрибутивы не могут контролировать, соответствуют ли установленные пользователями пакеты таким повышенным стандартам.10231024Добавлено в версии 3.5.10251026#### `COMPILEALL_OPTS`10271028Параметры, передаваемые командной строке [`compileall`](https://python-all.ru/3.13/library/compileall.html#module-compileall) при сборке PYC-файлов в `make install`. По умолчанию: `-j0`.10291030Добавлено в версии 3.12.10311032#### `EXTRA_CFLAGS`10331034Дополнительные флаги компилятора C.10351036#### `CONFIGURE_CFLAGS`10371038Значение переменной [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS), передаваемое сценарию `./configure` .10391040Добавлено в версии 3.2.10411042#### `CONFIGURE_CFLAGS_NODIST`10431044Значение переменной [`CFLAGS_NODIST`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS_NODIST), передаваемое сценарию `./configure` .10451046Добавлено в версии 3.5.10471048#### `BASECFLAGS`10491050Базовые флаги компилятора.10511052#### `OPT`10531054Флаги оптимизации.10551056#### `CFLAGS_ALIASING`10571058Флаги строгого или нестрогого алиасинга, используемые для компиляции `Python/dtoa.c`.10591060Добавлено в версии 3.7.10611062#### `CCSHARED`10631064Флаги компилятора, используемые для сборки разделяемой библиотеки.10651066Например, `-fPIC` используется в Linux и BSD.10671068#### `CFLAGSFORSHARED`10691070Дополнительные флаги C, добавляемые для сборки объектных файлов интерпретатора.10711072По умолчанию: `$(CCSHARED)` при использовании [`--enable-shared`](https://python-all.ru/3.13/using/configure.html#cmdoption-enable-shared), иначе пустая строка.10731074#### `PY_CFLAGS`10751076По умолчанию: `$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)`.10771078#### `PY_CFLAGS_NODIST`10791080По умолчанию: `$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal`.10811082Добавлено в версии 3.5.10831084#### `PY_STDMODULE_CFLAGS`10851086Флаги C, используемые для сборки объектных файлов интерпретатора.10871088По умолчанию: `$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)`.10891090Добавлено в версии 3.7.10911092#### `PY_CORE_CFLAGS`10931094По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE`.10951096Добавлено в версии 3.2.10971098#### `PY_BUILTIN_MODULE_CFLAGS`10991100Флаги компилятора для сборки модуля расширения стандартной библиотеки как встроенного модуля, подобно модулю [`posix`](https://python-all.ru/3.13/library/posix.html#module-posix).11011102По умолчанию: `$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN`.11031104Добавлено в версии 3.8.11051106#### `PURIFY`11071108Команда Purify. Purify – программа для отладки памяти.11091110По умолчанию: пустая строка (не используется).11111112### 3.5.3. Флаги компоновщика11131114#### `LINKCC`11151116Команда компоновщика, используемая для сборки программ, таких как `python` и `_testembed`.11171118По умолчанию: `$(PURIFY) $(CC)`.11191120#### `CONFIGURE_LDFLAGS`11211122Значение переменной [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS), передаваемое сценарию `./configure`.11231124Избегайте присваивания [`CFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS), [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) и т.д., чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не перезаписывая предустановленные.11251126Добавлено в версии 3.2.11271128#### `LDFLAGS_NODIST`11291130[`LDFLAGS_NODIST`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS_NODIST) используется так же, как [`CFLAGS_NODIST`](https://python-all.ru/3.13/using/configure.html#envvar-CFLAGS_NODIST). Используйте его, когда флаг компоновщика *не* должен быть частью [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) после установки Python ([gh-65320](https://python-all.ru/3.13/using/configure.html)).11311132В частности, [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) не должен содержать:11331134- флаг компилятора `-L` (для установки пути поиска библиотек). Флаги `-L` обрабатываются слева направо, и любые флаги в [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) будут иметь приоритет над флагами `-L`, предоставленными пользователем или пакетом.11351136#### `CONFIGURE_LDFLAGS_NODIST`11371138Значение переменной [`LDFLAGS_NODIST`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS_NODIST), передаваемое сценарию `./configure` .11391140Добавлено в версии 3.8.11411142#### `LDFLAGS`11431144Флаги компоновщика, например, `-Llib_dir`, если библиотеки находятся в нестандартном каталоге *lib\_dir*.11451146И [`CPPFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-CPPFLAGS), и [`LDFLAGS`](https://python-all.ru/3.13/using/configure.html#envvar-LDFLAGS) должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.11471148#### `LIBS`11491150Флаги компоновщика для передачи библиотек компоновщику при компоновке исполняемого файла Python.11511152Пример: `-lrt`.11531154#### `LDSHARED`11551156Команда для сборки разделяемой библиотеки.11571158По умолчанию: `@LDSHARED@ $(PY_LDFLAGS)`.11591160#### `BLDSHARED`11611162Команда для сборки разделяемой библиотеки `libpython`.11631164По умолчанию: `@BLDSHARED@ $(PY_CORE_LDFLAGS)`.11651166#### `PY_LDFLAGS`11671168По умолчанию: `$(CONFIGURE_LDFLAGS) $(LDFLAGS)`.11691170#### `PY_LDFLAGS_NODIST`11711172По умолчанию: `$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)`.11731174Добавлено в версии 3.8.11751176#### `PY_CORE_LDFLAGS`11771178Флаги компоновщика, используемые для сборки объектных файлов интерпретатора.11791180Добавлено в версии 3.8.11811182Сноски11831184\[[1](https://python-all.ru/3.13/using/configure.html#id3)\]11851186`git clean -fdx` – ещё более радикальный способ «очистить» рабочую копию. Он удаляет все файлы, не известные Git. При поиске ошибок с помощью `git bisect` это [рекомендуется между проверками](https://python-all.ru/3.13/using/configure.html) для гарантии полностью чистой сборки. **Используйте с осторожностью**, так как будут удалены все файлы, не отслеживаемые Git, включая ваши новые, несохранённые наработки.1187