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

3. Настройка PythonConfigure Python

3.1. Требования к сборкеBuild Requirements

Требования для сборки CPython:

Изменено в версии 3.5: В Windows требуется Visual Studio 2015 или новее.

Изменено в версии 3.6: Теперь требуются отдельные возможности C99, такие как функции <stdint.h> и static inline.

Изменено в версии 3.7: Теперь требуются поддержка потоков и OpenSSL 1.0.2.

Изменено в версии 3.10: Теперь требуется OpenSSL 1.1.1.

Изменено в версии 3.11: Теперь требуются компилятор C11, поддержка IEEE 754 и NaN. В Windows требуется Visual Studio 2017 или новее.

См. также PEP 7 «Руководство по стилю C» и PEP 11 «Поддержка платформ CPython».

3.2. Сгенерированные файлыGenerated files

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

make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure

Файл Makefile.pre.in документирует сгенерированные файлы, их входные данные и используемые инструменты для их перегенерации. Ищите цели make regen-*.

3.2.1. Сценарий configureconfigure script

Команда make regen-configure перегенерирует файл aclocal.m4 и сценарий configure с помощью сценария оболочки Tools/build/regen-configure.sh, который использует контейнер Ubuntu для получения тех же версий инструментов и обеспечения воспроизводимого результата.

Контейнер необязателен, следующую команду можно выполнить локально:

autoreconf -ivf -Werror

Сгенерированные файлы могут измениться в зависимости от точных версий autoconf-archive, aclocal и pkg-config.

3.3. Параметры configureConfigure Options

Выведите список всех параметров сценария ./configure с помощью:

./configure --help

См. также Misc/SpecialBuilds.txt в дистрибутиве исходного кода Python.

3.3.1. Общие параметрыGeneral Options

--enable-loadable-sqlite-extensions

Поддержка загружаемых расширений в модуле расширения _sqlite (по умолчанию отключено) модуля sqlite3.

См. метод sqlite3.Connection.enable_load_extension() модуля sqlite3.

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

--disable-ipv6

Отключить поддержку IPv6 (включена по умолчанию, если поддерживается), см. модуль socket.

--enable-big-digits=[15|30]

Определить размер в битах цифр Python int: 15 или 30 бит.

По умолчанию размер цифр равен 30.

Определить PYLONG_BITS_IN_DIGIT как 15 или 30.

См. sys.int_info.bits_per_digit.

--with-suffix=SUFFIX

Установить суффикс исполняемого файла Python равным SUFFIX.

Суффикс по умолчанию: .exe в Windows и macOS (python.exe исполняемый файл), .js в Emscripten node, .html в Emscripten browser, .wasm в WASI, и пустая строка на других платформах (python исполняемый файл).

Изменено в версии 3.11: Суффикс по умолчанию на платформе WASM – один из .js, .html или .wasm.

--with-tzpath=<list of absolute paths separated by pathsep>

Выбрать путь поиска часового пояса по умолчанию для zoneinfo.TZPATH. См. конфигурацию времени компиляции модуля zoneinfo.

По умолчанию: /usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo.

См. разделитель путей os.pathsep.

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

--without-decimal-contextvar

Сборка модуля расширения _decimal с контекстом, локальным для потока, а не с контекстом, локальным для корутины (по умолчанию). См. модуль decimal.

См. decimal.HAVE_CONTEXTVAR и модуль contextvars.

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

--with-dbmliborder=<list of backend names>

Переопределяет порядок проверки бэкендов БД для модуля dbm.

Допустимое значение – строка с именами бэкендов, разделённая двоеточиями (:):

  • ndbm;

  • gdbm;

  • bdb.

--without-c-locale-coercion

Отключает приведение локали C к локали на основе UTF-8 (включено по умолчанию).

Не определять макрос PY_COERCE_C_LOCALE.

См. PYTHONCOERCECLOCALE и PEP 538.

--without-freelists

Отключить все freelists, кроме синглтона пустого кортежа.

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

--with-platlibdir=DIRNAME

Имя каталога библиотек Python (по умолчанию lib).

Fedora и SuSE используют lib64 на 64-разрядных платформах.

См. sys.platlibdir.

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

--with-wheel-pkg-dir=PATH

Каталог пакетов wheel, используемых модулем ensurepip (по умолчанию отсутствует).

Некоторые политики упаковки дистрибутивов Linux рекомендуют не включать зависимости. Например, Fedora устанавливает пакеты wheel в каталог /usr/share/python-wheels/ и не устанавливает пакет ensurepip._bundled.

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

--with-pkg-config=[check|yes|no]

Должен ли configure использовать pkg-config для обнаружения зависимостей сборки.

  • check (по умолчанию): pkg-config необязателен

  • yes: pkg-config обязателен

  • no: configure не использует pkg-config, даже если он присутствует

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

--enable-pystats

Включить сбор внутренней статистики.

Статистика будет сохранена в произвольный (вероятно, уникальный) файл в /tmp/py_stats/, или C:\temp\py_stats\ в Windows. Если этот каталог не существует, результаты будут выведены в stdout.

Используйте Tools/scripts/summarize_stats.py для чтения статистики.

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

3.3.2. Параметры WebAssemblyWebAssembly Options

--with-emscripten-target=[browser|node]

Устанавливает вариант сборки для wasm32-emscripten.

  • browser (по умолчанию): предзагружать минимальную стандартную библиотеку, по умолчанию MEMFS.

  • node: поддержка NODERAWFS и pthread.

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

--enable-wasm-dynamic-linking

Включить поддержку динамической компоновки для WASM.

Динамическая компоновка включает dlopen. Размер исполняемого файла увеличивается из-за ограниченного удаления мёртвого кода и дополнительных возможностей.

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

--enable-wasm-pthreads

Включить поддержку pthreads для WASM.

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

3.3.3. Параметры установкиInstall Options

--prefix=PREFIX

Устанавливает архитектурно-независимые файлы в PREFIX. В Unix по умолчанию используется /usr/local.

Это значение можно получить во время выполнения с помощью sys.prefix.

Например, можно использовать --prefix="$HOME/.local/" для установки Python в домашний каталог.

--exec-prefix=EPREFIX

Устанавливает архитектурно-зависимые файлы в EPREFIX, по умолчанию --prefix.

Это значение можно получить во время выполнения с помощью sys.exec_prefix.

--disable-test-modules

Не собирать и не устанавливать тестовые модули, такие как пакет test или модуль расширения _testcapi (собирается и устанавливается по умолчанию).

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

--with-ensurepip=[upgrade|install|no]

Выбирает команду ensurepip, запускаемую при установке Python:

  • upgrade (по умолчанию): запустить команду python -m ensurepip --altinstall --upgrade .

  • install: запустить команду python -m ensurepip --altinstall;

  • no: не запускать ensurepip;

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

3.3.4. Параметры производительностиPerformance options

Для достижения максимальной производительности рекомендуется настраивать Python с помощью --enable-optimizations --with-lto (PGO + LTO). Экспериментальный флаг --enable-bolt также можно использовать для повышения производительности.

--enable-optimizations

Включает профильную оптимизацию (PGO) с помощью PROFILE_TASK (по умолчанию отключено).

Компилятору Clang требуется программа llvm-profdata для PGO. На macOS она также требуется GCC: GCC – это просто псевдоним Clang на macOS.

Также отключает семантическое переопределение символов в libpython, если используются --enable-shared и GCC: добавьте -fno-semantic-interposition в флаги компилятора и компоновщика.

Примечание

В процессе сборки могут появляться предупреждения компилятора о недоступности данных профиля для некоторых исходных файлов. Эти предупреждения безвредны, так как при сборе данных профиля выполняется лишь часть кода. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив -Wno-profile-instr-unprofiled к CFLAGS.

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

Изменено в версии 3.10: Используйте -fno-semantic-interposition в GCC.

PROFILE_TASK

Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.

По умолчанию: -m test --pgo --timeout=$(TESTTIMEOUT).

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

--with-lto=[full|thin|no|yes]

Включает оптимизацию во время компоновки (LTO) в любой сборке (по умолчанию отключено).

Компилятору Clang требуется llvm-ar для LTO (ar в macOS), а также компоновщик, поддерживающий LTO (ld.gold или lld).

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

Добавлено в версии 3.11: Для использования функции ThinLTO используйте --with-lto=thin в Clang.

Изменено в версии 3.12: Используйте ThinLTO в качестве политики оптимизации по умолчанию в Clang, если компилятор поддерживает этот флаг.

--enable-bolt

Включает использование оптимизатора бинарных файлов после компоновки BOLT (по умолчанию отключено).

BOLT является частью проекта LLVM, но не всегда входит в их бинарные дистрибутивы. Этот флаг требует наличия llvm-bolt и merge-fdata.

BOLT – всё ещё относительно новый проект, поэтому этот флаг пока следует считать экспериментальным. Поскольку этот инструмент работает с машинным кодом, его успех зависит от комбинации окружения сборки, других аргументов конфигурации оптимизации и архитектуры CPU, и не все комбинации поддерживаются. Известно, что версии BOLT до LLVM 16 аварийно завершаются в некоторых сценариях. Настоятельно рекомендуется использовать LLVM 16 или новее для оптимизации BOLT.

Переменные BOLT_INSTRUMENT_FLAGS и BOLT_APPLY_FLAGS configure можно определить, чтобы переопределить набор аргументов по умолчанию для llvm-bolt для инструментирования и применения данных BOLT к бинарным файлам соответственно.

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

--with-computed-gotos

Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).

--without-pymalloc

Отключает специализированный распределитель памяти Python pymalloc (включён по умолчанию).

См. также переменную окружения PYTHONMALLOC.

--without-doc-strings

Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.

Не определять макрос WITH_DOC_STRINGS.

См. макрос PyDoc_STRVAR().

--enable-profiling

Включает профилирование кода на уровне C с помощью gprof (отключено по умолчанию).

--with-strict-overflow

Добавляет -fstrict-overflow в флаги компилятора C (по умолчанию добавляется -fno-strict-overflow).

3.3.5. Отладочная сборка PythonPython Debug Build

Отладочная сборка – это Python, собранный с опцией конфигурации --with-pydebug.

Эффекты отладочной сборки:

  • Показывать все предупреждения по умолчанию: список фильтров предупреждений по умолчанию пуст в модуле warnings.

  • Добавляет d в sys.abiflags.

  • Добавляет функцию sys.gettotalrefcount().

  • Добавляет опцию командной строки -X showrefcount.

  • Добавляет опцию командной строки -d и переменную окружения PYTHONDEBUG для отладки парсера.

  • Добавляет поддержку переменной __lltrace__: включение низкоуровневой трассировки в цикле выполнения байт-кода, если переменная определена.

  • Устанавливает отладочные привязки на распределители памяти для обнаружения переполнения буфера и других ошибок памяти.

  • Определяет макросы Py_DEBUG и Py_REF_DEBUG.

  • Добавляет проверки времени выполнения: код, окружённый #ifdef Py_DEBUG и #endif. Включает утверждения assert(...) и _PyObject_ASSERT(...): не устанавливайте макрос NDEBUG (см. также опцию конфигурации --with-assertions). Основные проверки времени выполнения:

    • Добавляет проверки корректности аргументов функций.

    • Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неинициализированных объектов.

    • Гарантирует, что функции, которые могут очистить или заменить текущее исключение, не вызываются при возникшем исключении.

    • Проверяется, что функции деаллокации не изменяют текущее исключение.

    • Сборщик мусора (функция gc.collect()) выполняет базовые проверки корректности объектов.

    • Макрос Py_SAFE_DOWNCAST() проверяет целочисленное переполнение (underflow и overflow) при понижающем приведении от широких типов к узким.

См. также режим разработки Python и опцию конфигурации --with-trace-refs.

Изменено в версии 3.8: Сборки для выпуска и отладочные сборки теперь совместимы по ABI: определение макроса Py_DEBUG больше не подразумевает макрос Py_TRACE_REFS (см. опцию --with-trace-refs), который вводил единственную несовместимость ABI.

3.3.6. Отладочные опцииDebug options

--with-pydebug

Собрать Python в отладочном режиме: определяет макрос Py_DEBUG (отключён по умолчанию).

--with-trace-refs

Включает отслеживание ссылок для целей отладки (отключено по умолчанию).

Эффекты:

  • Определяет макрос Py_TRACE_REFS.

  • Добавляет функцию sys.getobjects().

  • Добавляет переменную окружения PYTHONDUMPREFS.

Эта сборка несовместима по ABI со сборкой для выпуска (сборкой по умолчанию) или отладочной сборкой (макросы Py_DEBUG и Py_REF_DEBUG).

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

--with-assertions

Сборка с включёнными C-утверждениями (по умолчанию нет): assert(...); и _PyObject_ASSERT(...);.

Если установлен, макрос NDEBUG не определяется в переменной компилятора OPT.

См. также опцию --with-pydebug (отладочная сборка), которая также включает утверждения.

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

--with-valgrind

Включить поддержку Valgrind (по умолчанию нет).

--with-dtrace

Включить поддержку DTrace (по умолчанию нет).

См. Инструментирование CPython с помощью DTrace и SystemTap.

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

--with-address-sanitizer

Включает детектор ошибок памяти AddressSanitizer, asan (по умолчанию нет).

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

--with-memory-sanitizer

Включить детектор ошибок выделения памяти MemorySanitizer, msan (по умолчанию нет).

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

--with-undefined-behavior-sanitizer

Включить детектор неопределённого поведения UndefinedBehaviorSanitizer, ubsan (по умолчанию нет).

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

3.3.7. Параметры компоновщикаLinker options

--enable-shared

Включает сборку разделяемой библиотеки Python: libpython (по умолчанию выключено).

--without-static-libpython

Не собирать libpythonMAJOR.MINOR.a и не устанавливать python.o (собирается и устанавливается по умолчанию).

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

3.3.8. Параметры библиотекLibraries options

--with-libs='lib1 ...'

Линковаться с дополнительными библиотеками (по умолчанию нет).

--with-system-expat

Собирать модуль pyexpat, используя установленную библиотеку expat (по умолчанию нет).

--with-system-libmpdec

Собрать модуль расширения _decimal, используя установленную библиотеку mpdec; см. модуль decimal (по умолчанию нет).

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

--with-readline=editline

Использовать библиотеку editline в качестве бэкенда модуля readline.

Определяет макрос WITH_EDITLINE.

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

--without-readline

Не собирать модуль readline (собирается по умолчанию).

Не определять макрос HAVE_LIBREADLINE.

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

--with-libm=STRING

Переопределить математическую библиотеку libm на STRING (по умолчанию зависит от системы).

--with-libc=STRING

Переопределить библиотеку C libc на STRING (по умолчанию зависит от системы).

--with-openssl=DIR

Корневой каталог OpenSSL.

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

--with-openssl-rpath=[no|auto|DIR]

Задать каталог библиотек времени выполнения (rpath) для библиотек OpenSSL:

  • no (по умолчанию): не устанавливать rpath;

  • auto: автоматически определять rpath из --with-openssl и pkg-config;

  • DIR: указать явный rpath.

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

3.3.9. Параметры безопасностиSecurity Options

--with-hash-algorithm=[fnv|siphash13|siphash24]

Выберите алгоритм хеширования для использования в Python/pyhash.c:

  • siphash13 (по умолчанию);

  • siphash24;

  • fnv.

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

Добавлено в версии 3.11: siphash13 добавлен и стал новым значением по умолчанию.

--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2

Встроенные хеш-модули:

  • md5;

  • sha1;

  • sha256;

  • sha512;

  • sha3 (с shake);

  • blake2.

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

--with-ssl-default-suites=[python|openssl|STRING]

Переопределить строку наборов шифров OpenSSL по умолчанию:

  • python (по умолчанию): использовать предпочтительный выбор Python;

  • openssl: оставить настройки OpenSSL по умолчанию без изменений;

  • STRING: использовать произвольную строку

См. модуль ssl.

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

Изменено в версии 3.10: Настройки python и STRING также устанавливают TLS 1.2 в качестве минимальной версии протокола.

3.3.10. Параметры macOSmacOS Options

См. Mac/README.rst.

--enable-universalsdk
--enable-universalsdk=SDKDIR

Создание универсальной сборки двоичного файла. SDKDIR указывает, какой macOS SDK следует использовать для сборки (по умолчанию нет).

--enable-framework
--enable-framework=INSTALLDIR

Создаёт Python.framework вместо традиционной установки в Unix. Необязательный INSTALLDIR определяет путь установки (по умолчанию – нет).

--with-universal-archs=ARCH

Определяет тип универсального бинарного файла, который будет создан. Этот параметр работает, только если указан --enable-universalsdk.

Варианты:

  • universal2 (x86-64 и arm64);

  • 32-bit (PPC и i386);

  • 64-bit (PPC64 и x86-64);

  • 3-way (i386, PPC и x86-64);

  • intel (i386 и x86-64);

  • intel-32 (i386);

  • intel-64 (x86-64);

  • all (PPC, i386, PPC64 и x86-64).

Обратите внимание: значения этого параметра конфигурации не совпадают с идентификаторами, используемыми для универсальных бинарных колец (wheels) в macOS. Подробнее о тегах совместимости платформы упаковки, используемых в macOS, см. в Python Packaging User Guide.

--with-framework-name=FRAMEWORK

Задаёт имя для python framework в macOS. Работает только при указанном --enable-framework (по умолчанию: Python).

3.3.11. Параметры кросс-компиляцииCross Compiling Options

Кросс-компиляция (также известная как кросс-сборка) используется для сборки Python под другую архитектуру CPU или платформу. Для кросс-компиляции требуется интерпретатор Python для платформы сборки. Версия Python для сборки должна совпадать с версией Python для целевой платформы, скомпилированной кросс-компилятором.

--build=BUILD

настройка для сборки на платформе BUILD, обычно определяется с помощью config.guess.

--host=HOST

кросс-компиляция для сборки программ, выполняемых на HOST (целевая платформа)

--with-build-python=path/to/python

путь к python двоичному файлу для кросс-компиляции

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

CONFIG_SITE=file

Переменная окружения, указывающая на файл с переопределениями configure.

Пример файла config.site:

# config.site-aarch64
ac_cv_buggy_getaddrinfo=no
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no

Пример кросс-компиляции:

CONFIG_SITE=config.site-aarch64 ../configure \
    --build=x86_64-pc-linux-gnu \
    --host=aarch64-unknown-linux-gnu \
    --with-build-python=../x86_64/python

3.4. Система сборки PythonPython Build System

3.4.1. Основные файлы системы сборкиMain files of the build system

  • configure.ac => configure;

  • Makefile.pre.in => Makefile (создаётся с помощью configure);

  • pyconfig.h (создаётся с помощью configure);

  • Modules/Setup: расширения на C, собираемые Makefile с помощью Module/makesetup shell-скрипта;

3.4.2. Основные этапы сборкиMain build steps

  • C-файлы (.c) компилируются в объектные файлы (.o).

  • Статическая библиотека libpython (.a) создаётся из объектных файлов.

  • python.o и статическая библиотека libpython компонуются в итоговую программу python.

  • Расширения на C собираются с помощью Makefile (см. Modules/Setup).

3.4.3. Основные цели MakefileMain Makefile targets

  • make: Собрать Python со стандартной библиотекой.

  • make platform:: собрать программу python, но не собирать модули расширений стандартной библиотеки.

  • make profile-opt: собрать Python с использованием профильной оптимизации (PGO). Чтобы сделать это целью по умолчанию команды make (make all или просто make), можно использовать опцию configure --enable-optimizations.

  • make buildbottest: собрать Python и запустить тестовый набор Python, так же как сборочные боты тестируют Python. Установите переменную TESTTIMEOUT (в секундах), чтобы изменить тайм-аут теста (по умолчанию 1200: 20 минут).

  • make install: собрать и установить Python.

  • make regen-all: перегенерировать (почти) все сгенерированные файлы; make regen-stdlib-module-names и autoconf должны быть запущены отдельно для оставшихся сгенерированных файлов.

  • make clean: удалить собранные файлы.

  • make distclean: то же, что make clean, но также удаляет файлы, созданные скриптом configure.

3.4.4. Расширения CC extensions

Некоторые расширения C собираются как встроенные модули, например модуль sys. Они собираются с определённым макросом Py_BUILD_CORE_BUILTIN. Встроенные модули не имеют атрибута __file__:

>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.__file__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'sys' has no attribute '__file__'

Другие расширения C собираются как динамические библиотеки, например модуль _asyncio. Они собираются с определённым макросом Py_BUILD_CORE_MODULE. Пример на Linux x86-64:

>>> import _asyncio
>>> _asyncio
<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'

Modules/Setup используется для генерации целей Makefile для сборки расширений C. В начале файлов расширения C собираются как встроенные модули. Расширения, определённые после маркера *shared*, собираются как динамические библиотеки.

Макросы PyAPI_FUNC(), PyAPI_DATA() и PyMODINIT_FUNC из Include/exports.h определяются по-разному в зависимости от того, определён ли макрос Py_BUILD_CORE_MODULE:

  • Используйте Py_EXPORTED_SYMBOL, если Py_BUILD_CORE_MODULE определён.

  • В противном случае используйте Py_IMPORTED_SYMBOL.

Если макрос Py_BUILD_CORE_BUILTIN по ошибке используется для расширения C, собранного как разделяемая библиотека, его функция PyInit_xxx() не экспортируется, что вызывает ImportError при импорте.

3.5. Флаги компилятора и компоновщикаCompiler and linker flags

Параметры, задаваемые сценарием ./configure и переменными окружения, и используемые Makefile.

3.5.1. Флаги препроцессораPreprocessor flags

CONFIGURE_CPPFLAGS

Значение переменной CPPFLAGS, передаваемое сценарию ./configure.

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

CPPFLAGS

(Objective) C/C++ флаги препроцессора, например -Iinclude_dir, если заголовочные файлы находятся в нестандартном каталоге include_dir.

И CPPFLAGS, и LDFLAGS должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.

BASECPPFLAGS

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

PY_CPPFLAGS

Дополнительные флаги препроцессора, добавляемые при сборке объектных файлов интерпретатора.

По умолчанию: $(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS).

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

3.5.2. Флаги компилятораCompiler flags

CC

Команда компилятора C.

Пример: gcc -pthread.

CXX

Команда компилятора C++.

Пример: g++ -pthread.

CFLAGS

Флаги компилятора C.

CFLAGS_NODIST

CFLAGS_NODIST используется для сборки интерпретатора и расширений C из стандартной библиотеки. Используйте его, когда флаг компилятора не должен быть частью CFLAGS после установки Python (gh-65320).

В частности, CFLAGS не должен содержать:

  • флаг компилятора -I (для задания пути поиска включаемых файлов). Флаги -I обрабатываются слева направо, и любые флаги из CFLAGS будут иметь приоритет над -I флагами, предоставленными пользователем и пакетами.

  • флаги усиления защиты, такие как -Werror, поскольку дистрибутивы не могут контролировать, соответствуют ли установленные пользователями пакеты таким повышенным стандартам.

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

COMPILEALL_OPTS

Параметры, передаваемые командной строке compileall при сборке PYC-файлов в make install. По умолчанию: -j0.

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

EXTRA_CFLAGS

Дополнительные флаги компилятора C.

CONFIGURE_CFLAGS

Значение переменной CFLAGS, передаваемое сценарию ./configure .

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

CONFIGURE_CFLAGS_NODIST

Значение переменной CFLAGS_NODIST, передаваемое сценарию ./configure .

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

BASECFLAGS

Базовые флаги компилятора.

OPT

Флаги оптимизации.

CFLAGS_ALIASING

Флаги строгого или нестрогого алиасинга, используемые для компиляции Python/dtoa.c.

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

CCSHARED

Флаги компилятора, используемые для сборки разделяемой библиотеки.

Например, -fPIC используется в Linux и BSD.

CFLAGSFORSHARED

Дополнительные флаги C, добавляемые для сборки объектных файлов интерпретатора.

По умолчанию: $(CCSHARED) при использовании --enable-shared, иначе пустая строка.

PY_CFLAGS

По умолчанию: $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).

PY_CFLAGS_NODIST

По умолчанию: $(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.

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

PY_STDMODULE_CFLAGS

Флаги C, используемые для сборки объектных файлов интерпретатора.

По умолчанию: $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).

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

PY_CORE_CFLAGS

По умолчанию: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.

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

PY_BUILTIN_MODULE_CFLAGS

Флаги компилятора для сборки модуля расширения стандартной библиотеки как встроенного модуля, подобно модулю posix.

По умолчанию: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.

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

PURIFY

Команда Purify. Purify – программа для отладки памяти.

По умолчанию: пустая строка (не используется).

3.5.3. Флаги компоновщикаLinker flags

LINKCC

Команда компоновщика, используемая для сборки программ, таких как python и _testembed.

По умолчанию: $(PURIFY) $(CC).

CONFIGURE_LDFLAGS

Значение переменной LDFLAGS, передаваемое сценарию ./configure.

Избегайте присваивания CFLAGS, LDFLAGS и т.д., чтобы пользователи могли использовать их в командной строке для добавления к этим значениям, не перезаписывая предустановленные.

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

LDFLAGS_NODIST

LDFLAGS_NODIST используется так же, как CFLAGS_NODIST. Используйте его, когда флаг компоновщика не должен быть частью LDFLAGS после установки Python (gh-65320).

В частности, LDFLAGS не должен содержать:

  • флаг компилятора -L (для установки пути поиска библиотек). Флаги -L обрабатываются слева направо, и любые флаги в LDFLAGS будут иметь приоритет над флагами -L, предоставленными пользователем или пакетом.

CONFIGURE_LDFLAGS_NODIST

Значение переменной LDFLAGS_NODIST, передаваемое сценарию ./configure .

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

LDFLAGS

Флаги компоновщика, например, -Llib_dir, если библиотеки находятся в нестандартном каталоге lib_dir.

И CPPFLAGS, и LDFLAGS должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.

LIBS

Флаги компоновщика для передачи библиотек компоновщику при компоновке исполняемого файла Python.

Пример: -lrt.

LDSHARED

Команда для сборки разделяемой библиотеки.

По умолчанию: @LDSHARED@ $(PY_LDFLAGS).

BLDSHARED

Команда для сборки разделяемой библиотеки libpython.

По умолчанию: @BLDSHARED@ $(PY_CORE_LDFLAGS).

PY_LDFLAGS

По умолчанию: $(CONFIGURE_LDFLAGS) $(LDFLAGS).

PY_LDFLAGS_NODIST

По умолчанию: $(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).

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

PY_CORE_LDFLAGS

Флаги компоновщика, используемые для сборки объектных файлов интерпретатора.

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