Spec-Zone.ru › Python 3.12

Настройка Python

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

Функции, необходимые для сборки CPython:

  • Компилятор C11. Дополнительные возможности C11 не требуются.
  • Поддержка IEEE 754 чисел с плавающей точкой и чисел с плавающей точкой Not-a-Number (NaN).
  • Поддержка потоков.
  • OpenSSL 1.1.1 или новее для модулей ssl и hashlib.
  • В Windows требуется Microsoft Visual Studio 2017 или более поздней версии.

Изменено в версии 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. Сгенерированные файлы

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

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

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

3.2.1. скрипт configure

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

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

autoreconf -ivf -Werror

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

3.3. Настройки конфигурации

Список всех ./configure параметров скрипта:

./configure --help

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

3.3.1. Общие настройки

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

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

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

--with-platlibdir=DIRNAME

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

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

См. sys.platlibdir.

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

--with-wheel-pkg-dir=PATH

Директория с пакетами колес, используемых модулем ensurepip (по умолчанию пусто).

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

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

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

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

  • check (по умолчанию): pkg-config необязателен
  • yes: pkg-config обязателен
  • no: pkg-config не используется даже если он присутствует

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

--enable-pystats

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

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

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

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

3.3.2. Настройки WebAssembly

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

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

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

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

--enable-wasm-dynamic-linking

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

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

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

--enable-wasm-pthreads

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

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

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

--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. Параметры производительности

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

--enable-optimizations

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

Компилятор C 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) в любом билде (отключено по умолчанию).

Компилятор C 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 — это относительно новый проект, поэтому этот флаг следует пока рассматривать как экспериментальный. Поскольку этот инструмент работает с машинным кодом, его успех зависит от комбинации среды сборки + других параметров конфигурации оптимизации + архитектуры процессора, и не все комбинации поддерживаются. Известно, что версии 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. Отладочная сборка Python

Отладочная сборка 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() проверяет целочисленное переполнение и подпотолок при преобразовании типов с широкого на узкий.

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

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

3.3.6. Параметры отладки

--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. Параметры компоновщика

--enable-shared

Включить создание общего библиотечного файла Python: libpython (по умолчанию нет).

--without-static-libpython

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

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

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

--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. Параметры безопасности

--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 без изменений;
  • СТРОКА: использовать настраиваемую строку

См. модуль ssl.

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

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

3.3.10. Параметры macOS

См. Mac/README.rst.

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

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

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

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

--with-universal-archs=ARCH

Укажите тип универсальной двоичной сборки, который следует создать. Этот параметр действителен только при установке --enable-universalsdk.

Варианты:

  • universal2;
  • 32-bit;
  • 64-bit;
  • 3-way;
  • intel;
  • intel-32;
  • intel-64;
  • all.
--with-framework-name=FRAMEWORK

Укажите имя для фреймворка python только на macOS, применимо когда --enable-framework установлено (по умолчанию: Python).

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

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

--build=BUILD

Настройка для сборки на BUILD, обычно угадывается config.guess.

--host=HOST

кросс-компиляция для построения программ для запуска на HOST (целевая платформа)

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

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

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

CONFIG_SITE=file

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

Пример файла 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. Система сборки Python

3.4.1. Основные файлы системы сборки

  • configure.ac => configure;
  • Makefile.pre.in => Makefile (создано configure);
  • pyconfig.h (создано configure);
  • Modules/Setup: C расширения, созданные файлом Makefile с использованием скрипта оболочки Module/makesetup;

3.4.2. Основные шаги сборки

  • Файлы C (.c) строятся как объектные файлы (.o).
  • Статическая libpython библиотека (.a) создается из объектных файлов.
  • python.o и статическая libpython библиотека подключаются к окончательной программе python.
  • C расширения строятся файлом Makefile (см. Modules/Setup).

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

  • make: Сборка Python со стандартной библиотекой.
  • make platform:: сборка программы python, но без сборки модулей расширений стандартной библиотеки.
  • make profile-opt: сборка Python с использованием Profile Guided Optimization (PGO). Можно использовать параметр конфигурации --enable-optimizations, чтобы сделать это целевым параметром команды make (make all или просто make).
  • make buildbottest: Сборка Python и запуск набора тестов Python, аналогично тому, как тесты Python выполняются в buildbots. Для изменения таймаута тестов (по умолчанию 1200 секунд: 20 минут) можно установить переменную TESTTIMEOUT (в секундах).
  • make install: Сборка и установка Python.
  • make regen-all: Перегенерация (почти) всех сгенерированных файлов; make regen-stdlib-module-names и autoconf необходимо выполнить отдельно для оставшихся сгенерированных файлов.
  • make clean: Удаление скомпилированных файлов.
  • make distclean: То же, что make clean, но также удаляются файлы, созданные скриптом конфигурации.

3.4.4. C расширения

Некоторые 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 при импорте.

END_OF_DOCUMENT_MARKER

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

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

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

CONFIGURE_CPPFLAGS

Значение переменной CPPFLAGS, переданной скрипту ./configure.

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

CPPFLAGS

(Объективные) Флаги препроцессора 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. Флаги компилятора

CC

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

Пример: gcc -pthread.

CXX

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

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

CFLAGS

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

CFLAGS_NODIST

CFLAGS_NODIST используется для построения интерпретатора и расширений C stdlib. Используйте его, когда флаг компилятора не должен быть частью 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 — это программа отладки памяти.

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

END_OF_DOCUMENT_MARKER

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

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.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/using/configure.html

Spec-Zone.ru

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