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

3.1. Настройка параметров

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

./configure --help

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

3.1.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-cxx-main
--with-cxx-main=COMPILER

Скомпилируйте функцию Python main() и свяжите исполняемый файл Python с компилятором C++: $CXX или COMPILER, если указано.

--with-suffix=SUFFIX

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

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

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

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

Выберите путь поиска часового пояса по умолчанию для zoneinfo.TZPATH. Смотрите раздел Compile-time configuration модуля 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.

--with-platlibdir=DIRNAME

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

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

Смотрите sys.platlibdir.

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

--with-wheel-pkg-dir=PATH

Каталог пакетов колес, используемых модулем 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.11.

--enable-pystats

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

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

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

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

3.1.2. Параметры веб-сборки

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

Установите для параметра build значение wasm32-emscripten.

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

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

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

--enable-wasm-dynamic-linking

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

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

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

--enable-wasm-pthreads

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

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

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

--prefix=PREFIX

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

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

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

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

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

--enable-optimizations

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

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

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

Добавлено в версии 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.

--with-computed-gotos

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

--without-pymalloc

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

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

--without-doc-strings

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

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

Смотрите макрос PyDoc_STRVAR().

--enable-profiling

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

3.1.5. Сборка для отладки на Python

Отладочная сборка - это сборка на Python с параметром --with-pydebug configure.

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

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

  • Добавьте d к sys.abiflags.

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

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

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

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

  • Установите debug hooks on memory allocators для обнаружения переполнения буфера и других ошибок памяти.

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

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

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

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

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

    • Убедитесь, что функции освобождения не изменяют текущее исключение.

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

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

Смотрите также параметры настройки Python Development Mode и --with-trace-refs.

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

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

--with-pydebug

Build Python in debug mode: определите макрос Py_DEBUG (по умолчанию отключен).

--with-trace-refs

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

Эффекты:

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

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

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

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

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

--with-assertions

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

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

Смотрите также параметр --with-pydebug (debug build), который также позволяет использовать утверждения.

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

--with-valgrind

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

--with-dtrace

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

Смотрите Instrumenting CPython with DTrace and 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.1.7. Параметры компоновщика

--enable-shared

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

--without-static-libpython

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

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

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

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

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

--with-system-expat

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

--with-system-ffi

Создайте модуль расширения _ctypes, используя установленную библиотеку ffi, смотрите модуль ctypes (по умолчанию он зависит от системы).

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

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

--with-openssl=DIR

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

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

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

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

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

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

  • DIR: укажите явный путь.

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

3.1.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 (при встряхивании);

  • 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.1.10. Параметры macOS

Смотрите Mac/README.rst.

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

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

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

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

--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.1.11. Параметры кросс-компиляции

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

--build=BUILD

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

--host=HOST

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

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

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

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

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.2. Система сборки на Python

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

  • configure.ac => configure;

  • Makefile.pre.in => Makefile ( создано configure);

  • pyconfig.h (создано configure);

  • Modules/Setup: Расширения C, созданные с помощью Makefile с использованием сценария оболочки Module/makesetup;

  • setup.py: Расширения C, созданные с использованием модуля distutils.

3.2.2. Основные этапы сборки

  • Файлы C (.c) создаются как объектные файлы (.o).

  • Статическая библиотека libpython (.a) создается из файлов objects.

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

  • Расширения C создаются с помощью Makefile (см. Modules/Setup) и python setup.py build.

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

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

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

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

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

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

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

  • make clean: Удалить созданные файлы.

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

3.2.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*, создаются как динамические библиотеки.

Скрипт setup.py создает расширения C только в виде разделяемых библиотек, используя модуль distutils.

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

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

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

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

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

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

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

CONFIGURE_CPPFLAGS

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

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

CPPFLAGS

(Objective) Флаги препроцессора C/C++, например -Iinclude_dir, если у вас есть заголовки в нестандартном каталоге include_dir.

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

BASECPPFLAGS

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

PY_CPPFLAGS

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

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

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

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

CC

Команда компилятора языка Си.

Пример: gcc -pthread.

MAINCC

Команда компилятора языка Си, используемая для создания функции main() в таких программах, как python.

Переменная, заданная параметром --with-cxx-main скрипта configure.

Значение по умолчанию: $(CC).

CXX

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

Используется, если используется параметр --with-cxx-main.

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

CFLAGS

Флаги компилятора языка Си.

CFLAGS_NODIST

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

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

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

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

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

EXTRA_CFLAGS

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

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

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

Значение по умолчанию: $(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.3.3. Флаги компоновщика

LINKCC

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

Значение по умолчанию: $(PURIFY) $(MAINCC).

CONFIGURE_LDFLAGS

Значение переменной LDFLAGS передается в скрипт ./configure.

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

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

LDFLAGS_NODIST

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

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

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

CONFIGURE_LDFLAGS_NODIST

Значение переменной LDFLAGS_NODIST передается в скрипт ./configure.

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

LDFLAGS

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

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

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.

Вернуться на верх