Настройка 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 с помощью shell-скрипта 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.
-
--with-suffix=SUFFIX -
Задать суффикс исполняемого файла Python: SUFFIX.
По умолчанию используется суффикс
.exeв Windows и macOS (исполняемый файлpython.exe),.jsв Emscripten node,.htmlв браузере Emscripten,.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 -
Каталог пакетов 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.11.
-
-
--enable-pystats -
Включить сбор внутренней статистики.
Статистика будет записана в произвольный (вероятно, уникальный) файл в
/tmp/py_stats/или вC:\temp\py_stats\в Windows. Если этот каталог не существует, результаты будут выведены в stdout.Используйте
Tools/scripts/summarize_stats.pyдля чтения статистики.Добавлено в версии 3.11.
3.3.2. Параметры WebAssembly
-
--with-emscripten-target=[browser|node] -
Задать вариант сборки для
wasm32-emscripten.-
browser(по умолчанию): предварительно загрузить минимальную стандартную библиотеку, MEMFS по умолчанию. -
node: поддержка NODERAWFS и pthreads.
Добавлено в версии 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(по умолчанию отключена).Для PGO компилятору C Clang требуется программа
llvm-profdata. В macOS она также требуется GCC: в macOS GCC — это просто псевдоним Clang.Если используется
--enable-sharedи GCC, также отключить семантическую интерпозицию в libpython: добавить-fno-semantic-interpositionк флагам компилятора и компоновщика.Примечание
Во время сборки могут появиться предупреждения компилятора о недоступности данных профиля для некоторых исходных файлов. Эти предупреждения безвредны, поскольку при сборе данных профиля выполняется только часть кода. Чтобы отключить эти предупреждения в Clang, вручную подавите их, добавив
-Wno-profile-instr-unprofiledвCFLAGS.Добавлено в версии 3.6.
Изменено в версии 3.10: В GCC используется
-fno-semantic-interposition.
-
PROFILE_TASK -
Переменная окружения, используемая в Makefile: аргументы командной строки Python для задачи генерации PGO.
По умолчанию:
-m test --pgo --timeout=$(TESTTIMEOUT).Добавлено в версии 3.8.
-
--with-lto=[full|thin|no|yes] -
Включить оптимизацию времени компоновки (LTO) при любой сборке (по умолчанию отключена).
Для LTO компилятору C Clang требуется
llvm-ar(arв macOS), а также компоновщик с поддержкой LTO (ld.goldилиlld).Добавлено в версии 3.6.
Добавлено в версии 3.11: Чтобы использовать функцию ThinLTO, применяйте
--with-lto=thinв Clang.Изменено в версии 3.12: В Clang ThinLTO используется как политика оптимизации по умолчанию, если компилятор принимает этот флаг.
-
--enable-bolt -
Включить использование бинарного оптимизатора BOLT, работающего после компоновки (по умолчанию отключено).
BOLT входит в проект LLVM, но не всегда включён в его бинарные дистрибутивы. Для этого флага требуется наличие
llvm-boltиmerge-fdata.BOLT — пока ещё довольно новый проект, поэтому на данный момент этот флаг следует считать экспериментальным. Поскольку инструмент работает с машинным кодом, его успех зависит от сочетания среды сборки, других аргументов configure для оптимизации и архитектуры ЦП; поддерживаются не все сочетания. Известно, что версии BOLT до LLVM 16 в некоторых случаях аварийно завершают работу. Настоятельно рекомендуется использовать для оптимизации BOLT LLVM 16 или новее.
Переменные configure
BOLT_INSTRUMENT_FLAGSиBOLT_APPLY_FLAGSможно задать, чтобы переопределить набор аргументов по умолчанию для 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 с параметром configure --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(см. также параметр configure--with-assertions). Основные проверки во время выполнения:- Добавить проверки корректности аргументов функций.
- Объекты Unicode и int создаются с заполненной шаблоном памятью для обнаружения использования неинициализированных объектов.
- Проверять, что функции, которые могут очистить или заменить текущее исключение, не вызываются при поднятом исключении.
- Проверять, что функции освобождения памяти не изменяют текущее исключение.
- Сборщик мусора (функция
gc.collect()) выполняет базовые проверки согласованности объектов. - Макрос
Py_SAFE_DOWNCAST()проверяет целочисленное переполнение и недополнение при преобразовании из широких типов в узкие.
См. также Режим разработки Python и параметр configure --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. Параметры компоновщика
-
Включить сборку общей библиотеки 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 по умолчанию без изменений; - STRING: использовать пользовательскую строку
См. модуль
ssl.Добавлено в версии 3.7.
Изменено в версии 3.10: Параметры
pythonи STRING также устанавливают 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(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).
Обратите внимание, что значения этого параметра конфигурации не совпадают с идентификаторами, используемыми для универсальных wheel-пакетов на macOS. Подробности см. в руководстве пользователя по упаковке Python в разделе тегов совместимости платформ для упаковки, используемых в macOS
-
-
--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 -
Переменная окружения, указывающая на файл с переопределениями 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. Система сборки Python
3.4.1. Основные файлы системы сборки
-
configure.ac=>configure; -
Makefile.pre.in=>Makefile(создано с помощьюconfigure); -
pyconfig.h(создано с помощьюconfigure); -
Modules/Setup: расширения C, собираемые Makefile с помощью shell-скрипта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 с помощью оптимизации с профилированием (PGO). Чтобы сделать эту цель значением по умолчанию для командыmake(make allили простоmake), можно использовать параметр configure--enable-optimizations. -
make buildbottest: собрать Python и запустить набор тестов Python, как это делают buildbot. Чтобы изменить время ожидания тестов (по умолчанию 1200 секунд — 20 минут), задайте переменнуюTESTTIMEOUT(в секундах). -
make install: собрать и установить Python. -
make regen-all: повторно создать (почти) все сгенерированные файлы; для остальных сгенерированных файлов необходимо отдельно выполнитьmake regen-stdlib-module-namesиautoconf. -
make clean: удалить собранные файлы. -
make distclean: аналогичноmake clean, но дополнительно удаляет файлы, созданные сценарием configure.
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 при импорте.
3.5. Флаги компилятора и компоновщика
Параметры, задаваемые сценарием ./configure и переменными окружения и используемые Makefile.
3.5.1. Флаги препроцессора
-
CONFIGURE_CPPFLAGS -
Значение переменной
CPPFLAGS, передаваемое сценарию./configure.Добавлено в версии 3.6.
-
CPPFLAGS -
Флаги препроцессора C/C++ (Objective-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. Используйте эту переменную, если флаг компилятора не должен входить в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 -
Флаги компилятора, используемые для сборки разделяемой библиотеки.
Например, в Linux и BSD используется
-fPIC.
-
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. Флаги компоновщика
-
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