Содержание страницы
3. Настройка Python¶Configure Python
3.1. Требования к сборке¶Build Requirements
Для сборки CPython потребуется:
Компилятор C11. Опциональные возможности C11 не требуются.
В Windows требуется Microsoft Visual Studio 2017 или новее.
Поддержка IEEE 754 чисел с плавающей запятой и нечисла (NaN).
Поддержка потоков.
Изменено в версии 3.5: В Windows теперь требуется Visual Studio 2015 или новее.
Изменено в версии 3.6: Отдельные возможности C99, такие как функции <stdint.h> и static inline,
теперь требуются.
Изменено в версии 3.7: Поддержка потоков теперь обязательна.
Изменено в версии 3.11: Теперь требуются компилятор C11, поддержка IEEE 754 и NaN. В Windows требуется Visual Studio 2017 или новее.
См. также PEP 7 «Руководство по стилю C» и PEP 11 «Поддержка платформ CPython».
3.1.1. Требования к опциональным модулям¶Requirements for optional modules
Некоторые опциональные модули стандартной библиотеки требуют установки сторонних библиотек для разработки (например, должны быть доступны заголовочные файлы).
Отсутствующие требования выводятся в configure.
Модули, отсутствующие из-за неудовлетворённых зависимостей, перечисляются ближе к концу
вывода make,
иногда под внутренним именем, например, _ctypes для модуля ctypes
.
При распространении интерпретатора CPython без опциональных модулей рекомендуется уведомлять пользователей, которые обычно ожидают, что модули стандартной библиотеки доступны.
Зависимости для сборки опциональных модулей:
Зависимость |
Минимальная версия |
Модуль Python |
|---|---|---|
Рекомендуется 3.3.0 |
||
2.5.0 |
||
libreadline или libedit [2] |
||
|
||
Рекомендуется 3.0.18
(минимум 1.1.1)
|
||
3.15.2 |
||
8.5.12 |
||
1.2.2.1 |
||
1.4.5 |
Обратите внимание, что таблица включает не все опциональные модули; в частности,
платформенно-зависимые модули, такие как winreg, здесь не перечислены.
См. также
Руководство разработчика содержит полный список зависимостей, необходимых для сборки всех модулей, и инструкции по их установке на распространённых платформах.
--with-system-expatпозволяет сборку с внешней библиотекой libexpat.
Изменено в версии 3.1: Теперь для tkinter требуется Tcl/Tk версии 8.3.1.
Изменено в версии 3.5: Теперь для tkinter требуется Tcl/Tk версии 8.4.
Изменено в версии 3.10: Теперь для hashlib и ssl требуется OpenSSL 1.1.1.
Для sqlite3 теперь требуется SQLite 3.7.15.
Изменено в версии 3.11: Теперь требуется Tcl/Tk версии 8.5.12 для tkinter.
Изменено в версии 3.13: Теперь требуется SQLite 3.15.2 для sqlite3.
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. Сценарий configure¶configure script
Команда make regen-configure перегенерирует файл aclocal.m4 и
сценарий configure с помощью сценария оболочки Tools/build/regen-configure.sh,
который использует контейнер Ubuntu для получения тех же версий инструментов и обеспечения
воспроизводимого результата.
Контейнер необязателен, следующую команду можно выполнить локально:
autoreconf -ivf -Werror
Сгенерированные файлы могут изменяться в зависимости от точных версий используемых
инструментов.
Контейнер, используемый CPython, содержит
Autoconf 2.72,
aclocal из Automake 1.16.5,
и pkg-config 1.8.1.
Изменено в версии 3.13: Теперь используются Autoconf 2.71 и aclocal 1.16.5 для перегенерации
configure.
Изменено в версии 3.14: Теперь используется Autoconf 2.72 для перегенерации configure.
3.3. Параметры configure¶Configure 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.
- --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.
- --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.
- --with-missing-stdlib-config=FILE¶
Путь к файлу конфигурации JSON, содержащему пользовательские сообщения об ошибках для отсутствующих модулей стандартной библиотеки.
Эта опция предназначена для распространителей Python, желающих предоставлять специфичные для дистрибутива рекомендации, когда пользователи сталкиваются с модулями стандартной библиотеки, которые отсутствуют или упакованы отдельно.
JSON-файл должен сопоставлять имена отсутствующих модулей со строками пользовательских сообщений об ошибках. Например, если дистрибутив распространяет
tkinterи_tkinterотдельно, а_gdbmисключает по юридическим причинам, конфигурация может содержать:{ "_gdbm": "The '_gdbm' module is not available in this distribution", "tkinter": "Install the python-tk package to use tkinter", "_tkinter": "Install the python-tk package to use tkinter", }
Добавлено в версии 3.15.
- --enable-pystats¶
Включает сбор внутренней статистики производительности Python.
По умолчанию сбор статистики выключен. Используйте команду
python3 -X pystatsили установите переменную окруженияPYTHONSTATS=1, чтобы включить сбор статистики при запуске Python.При выходе из Python выгружает статистику, если сбор статистики был включён и не очищен.
Эффекты:
Добавляет опцию командной строки
-X pystats.Добавляет переменную окружения
PYTHONSTATS.Определяет макрос
Py_STATS.Добавляет функции в модуль
sys:sys._stats_on(): Включает сбор статистики.sys._stats_off(): Выключает сбор статистики.sys._stats_clear(): Очищает статистику.sys._stats_dump(): Сбрасывает статистику в файл и очищает её.
Статистика будет сброшена в произвольный (вероятно, уникальный) файл в\n
/tmp/py_stats/(Unix) илиC:\temp\py_stats\(Windows). Если этот\nкаталог не существует, результаты будут выведены в stderr.Используйте
Tools/scripts/summarize_stats.pyдля чтения статистики.Статистика:
Код операции:
Специализация: успех, неудача, попадание, отложено, промах, деоптимизация, сбои;
Счётчик выполнения;
Счётчик пар.
Вызов:
Встроенные вызовы Python;
Вызовы PyEval;
Помещено фреймов;
Создано объектов фреймов;
Вызовы eval: векторный, генераторный, устаревший, функция VECTORCALL, сборка класса, слот, функция “ex”, API, метод.
Объект:
incref и decref;
интерпретатор incref и decref;
выделения: все, 512 байт, 4 КиБ, большие;
освобождение;
в/из списков свободных блоков;
словарь материализован/дематериализован;
кэш типов;
попытки оптимизации;
трассы оптимизации создано/выполнено;
выполнено uops.
Сборщик мусора:
Сборок мусора;
Посещено объектов;
Собрано объектов.
Добавлено в версии 3.12.
- --disable-gil¶
Включает поддержку запуска Python без глобальной блокировки\nинтерпретатора (GIL): сборка без блокировок.
Определяет макрос
Py_GIL_DISABLEDи добавляет"t"в\nsys.abiflags.Подробнее см. Free-threaded CPython.
Добавлено в версии 3.13.
- --enable-experimental-jit=[no|yes|yes-off|interpreter]¶
Указывает, как интегрировать экспериментальный JIT-компилятор.
no: Не собирать JIT.yes: Включить JIT. Чтобы отключить его во время выполнения, установите переменную окруженияPYTHON_JIT=0.yes-off: Собрать JIT, но по умолчанию отключить его. Чтобы включить его во время выполнения, установите переменную окруженияPYTHON_JIT=1.interpreter: Включить «JIT-интерпретатор» (полезно только для отладки самого JIT). Чтобы отключить его во время выполнения, установите переменную окруженияPYTHON_JIT=0.
--enable-experimental-jit=no– поведение по умолчанию, если опция не указана, а--enable-experimental-jit– сокращение для--enable-experimental-jit=yes. См.Tools/jit/README.mdдля получения дополнительной информации, включая установку необходимых зависимостей времени сборки.Примечание
При сборке CPython с включённым JIT убедитесь, что в системе установлен Python 3.11 или новее.
Добавлено в версии 3.13.
- PKG_CONFIG¶
Путь к утилите
pkg-config.
- PKG_CONFIG_LIBDIR¶
- PKG_CONFIG_PATH¶
Параметры
pkg-config.
- --disable-epoll¶
Сборка без
epoll, что означает, чтоselect.epoll()не будет присутствовать, даже если система предоставляет функцию epoll_create. Это может быть использовано в системах, где epoll_create или epoll_create1 доступен, но несовместим с семантикой Linux.Добавлено в версии 3.15.
3.3.2. Параметры компилятора C¶C compiler options
- CC¶
Команда компилятора C.
- CFLAGS¶
Флаги компилятора C.
- CPP¶
Команда препроцессора C.
- CPPFLAGS¶
Флаги препроцессора C, например
-Iinclude_dir.
3.3.3. Параметры компоновщика¶Linker options
- LDFLAGS¶
Флаги компоновщика, например
-Llibrary_directory.
- LIBS¶
Библиотеки для передачи компоновщику, например
-llibrary.
- MACHDEP¶
Имя для машинно-зависимых файлов библиотек.
3.3.4. Параметры для сторонних зависимостей¶Options for third-party dependencies
Добавлено в версии 3.12.
- BZIP2_CFLAGS¶
- BZIP2_LIBS¶
Флаги компилятора C и компоновщика для связывания Python с
libbz2, используемые модулемbz2, переопределяющиеpkg-config.
- CURSES_CFLAGS¶
- CURSES_LIBS¶
Флаги компилятора C и компоновщика для
libncursesилиlibncursesw, используемые модулемcurses, переопределяющиеpkg-config.
- GDBM_CFLAGS¶
- GDBM_LIBS¶
Флаги компилятора C и компоновщика для
gdbm.
- LIBEDIT_CFLAGS¶
- LIBEDIT_LIBS¶
Флаги компилятора C и компоновщика для
libedit, используемые модулемreadline, переопределяющиеpkg-config.
- LIBFFI_CFLAGS¶
- LIBFFI_LIBS¶
Флаги компилятора C и компоновщика для
libffi, используемые модулемctypes, переопределяющиеpkg-config.
- LIBMPDEC_CFLAGS¶
- LIBMPDEC_LIBS¶
Флаги компилятора C и компоновщика для
libmpdec, используемые модулемdecimal, переопределяющиеpkg-config.Примечание
Эти переменные окружения не действуют, если не указан
--with-system-libmpdec.
- LIBLZMA_CFLAGS¶
- LIBLZMA_LIBS¶
Флаги компилятора C и компоновщика для
liblzma, используемые модулемlzma, переопределяющиеpkg-config.
- LIBREADLINE_CFLAGS¶
- LIBREADLINE_LIBS¶
Флаги компилятора C и компоновщика для
libreadline, используемые модулемreadline, переопределяющиеpkg-config.
- LIBSQLITE3_CFLAGS¶
- LIBSQLITE3_LIBS¶
Флаги компилятора C и компоновщика для
libsqlite3, используемые модулемsqlite3, переопределяющиеpkg-config.
- LIBUUID_CFLAGS¶
- LIBUUID_LIBS¶
Флаги компилятора C и компоновщика для
libuuid, используемые модулемuuid, переопределяющиеpkg-config.
- LIBZSTD_CFLAGS¶
- LIBZSTD_LIBS¶
Флаги компилятора C и компоновщика для
libzstd, используемые модулемcompression.zstd, переопределяющиеpkg-config.Добавлено в версии 3.14.
- PANEL_CFLAGS¶
- PANEL_LIBS¶
Флаги компилятора C и компоновщика для PANEL, переопределяющие
pkg-config.Флаги компилятора C и компоновщика для
libpanelилиlibpanelw, используемые модулемcurses.panel, переопределяющиеpkg-config.
- TCLTK_CFLAGS¶
- TCLTK_LIBS¶
Флаги компилятора C и компоновщика для TCLTK, переопределяющие
pkg-config.
- ZLIB_CFLAGS¶
3.3.5. Параметры WebAssembly¶WebAssembly Options
- --enable-wasm-dynamic-linking¶
Включить поддержку динамической компоновки для WASM.
Динамическая компоновка включает
dlopen. Размер исполняемого файла увеличивается из-за ограниченного удаления мёртвого кода и дополнительных возможностей.Добавлено в версии 3.12.
- --enable-wasm-pthreads¶
Включить поддержку pthreads для WASM.
Добавлено в версии 3.12.
3.3.6. Параметры установки¶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.7. Параметры производительности¶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.
Изменено в версии 3.13: Сбой задачи больше не игнорируется без уведомления.
- --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_FLAGSconfigure можно определить, чтобы переопределить набор аргументов по умолчанию для llvm-bolt для инструментирования и применения данных BOLT к бинарным файлам соответственно.Добавлено в версии 3.12.
- BOLT_APPLY_FLAGS¶
Аргументы для
llvm-boltпри создании оптимизированного BOLT бинарного файла.Добавлено в версии 3.12.
- BOLT_INSTRUMENT_FLAGS¶
Аргументы для
llvm-boltпри инструментировании бинарных файлов.Добавлено в версии 3.12.
- --with-computed-gotos¶
Включает вычисляемые переходы в цикле вычислений (включено по умолчанию на поддерживаемых компиляторах).
- --with-tail-call-interp¶
Включает интерпретаторы, использующие хвостовые вызовы в CPython. Если эта опция включена, настоятельно рекомендуется также включить PGO (
--enable-optimizations). Эта опция требует компилятор C с поддержкой хвостовых вызовов и соглашения о вызовах preserve_none. Например, Clang 19 и новее поддерживает эту функцию.Добавлено в версии 3.14.
- --without-frame-pointers¶
Отключает указатели фреймов, которые включены по умолчанию (см. PEP 831).
По умолчанию сборка добавляет флаги для генерации указателей фреймов или обратной цепочки к
BASECFLAGS:-fno-omit-frame-pointerи/или-mno-omit-leaf-frame-pointerдобавляются, если компилятор их поддерживает.-marmи/или-mno-thumbдобавляется на 32-битной ARM при поддержке,на платформах s390x, при поддержке,
-mbackchainдобавляется вместо. указанных выше флагов указателей фреймов.на платформах ppc64le флаги компилятора не требуются, так как ABI Power требует, чтобы компиляторы по умолчанию поддерживали обратную цепочку.
Указатели фреймов позволяют профилировщикам, отладчикам и системным инструментам трассировки (
perf,eBPF,dtrace,gdb) обходить стек вызовов C без метаданных DWARF. Эти флаги передаются сторонним расширениям C черезsysconfig. На компиляторах, которые их не понимают, сборка молча их пропускает.Распространителям пакетов и авторам нативных библиотек, собираемых с помощью пользовательских систем сборки, следует устанавливать те же флаги, чтобы цепочка размотки оставалась непрерывной во всех нативных фреймах.
Добавлено в версии 3.15.
- --without-mimalloc¶
Отключает быстрый распределитель mimalloc (включён по умолчанию).
Эту опцию нельзя использовать вместе с
--disable-gil, так как сборка без GIL требует mimalloc.См. также переменную окружения
PYTHONMALLOC.
- --without-pymalloc¶
Отключает специализированный распределитель памяти Python pymalloc (включён по умолчанию).
См. также переменную окружения
PYTHONMALLOC.
- --with-pymalloc-hugepages¶
Включает поддержку больших страниц для арен pymalloc (отключено по умолчанию). При включении размер арены на 64-битных платформах увеличивается до 2 МиБ, и для выделения арен используется
MAP_HUGETLB(Linux) илиMEM_LARGE_PAGES(Windows) с автоматическим возвратом к обычным страницам.Даже если сборка выполнена с этим параметром, большие страницы не используются во время выполнения, пока переменная окружения
PYTHON_PYMALLOC_HUGEPAGESне установлена в1. Этот добровольный выбор необходим, потому что большие страницынесут риски в Linux: если пул больших страниц исчерпан, сбои страниц (включая сбои копирования при записи после
os.fork()) приводят кSIGBUSи убивают процесс.требуют специальных привилегий в Windows. Подробнее см. документацию Windows по большим страницам. Python завершится ошибкой при запуске, если у пользователя нет необходимой привилегии SeLockMemoryPrivilege.
Скрипт configure проверяет, поддерживает ли платформа
MAP_HUGETLB, и выводит предупреждение, если это не так.В Windows используйте флаг
--pymalloc-hugepagesсbuild.batили установите свойство MSBuildUsePymallocHugepages.Добавлено в версии 3.15.
- --without-doc-strings¶
Отключает статические строки документации для уменьшения потребления памяти (включено по умолчанию). Строки документации, определённые в Python, не затрагиваются.
Не определять макрос
WITH_DOC_STRINGS.См. макрос
PyDoc_STRVAR().
- --enable-profiling¶
Включает профилирование кода на уровне C с помощью
gprof(отключено по умолчанию).
- --with-strict-overflow¶
Добавляет
-fstrict-overflowв флаги компилятора C (по умолчанию добавляется-fno-strict-overflow).
- --without-remote-debug¶
Отключает поддержку удаленной отладки, описанную в PEP 768 (включена по умолчанию). Когда этот флаг указан, код, который позволяет интерпретатору планировать выполнение файла Python в отдельном процессе, как описано в PEP 768, не компилируется. Это включает как функциональность для планирования выполняемого кода, так и функциональность для получения кода для выполнения.
-
Py_REMOTE_DEBUG¶
Этот макрос определяется по умолчанию, если Python не сконфигурирован с
--without-remote-debug.Обратите внимание, что даже если макрос определён, удаленная отладка может быть недоступна (например, на несовместимой платформе).
Добавлено в версии 3.14.
-
Py_REMOTE_DEBUG¶
3.3.8. Отладочная сборка Python¶Python 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). Однако отладочные сборки по-прежнему экспортируют больше символов, чем релизные, и код, собранный для отладочной сборки, не обязательно совместим с релизной.
3.3.9. Отладочные опции¶Debug options
- --with-pydebug¶
Собрать Python в отладочном режиме: определяет макрос
Py_DEBUG(отключён по умолчанию).
- --with-trace-refs¶
Включает отслеживание ссылок для целей отладки (отключено по умолчанию).
Эффекты:
Определяет макрос
Py_TRACE_REFS.Добавляет функцию
sys.getobjects().Добавляет переменную окружения
PYTHONDUMPREFS.
Переменная окружения
PYTHONDUMPREFSможет использоваться для дампа объектов и счётчиков ссылок, остающихся активными при завершении Python.Статически размещённые объекты не отслеживаются.
Добавлено в версии 3.8.
Изменено в версии 3.13: Эта сборка теперь совместима по ABI с релизной сборкой и отладочной сборкой.
- --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(по умолчанию нет). Чтобы улучшить возможности обнаружения ASan, можно также объединить это с--without-pymallocдля отключения специализированного аллокатора малых объектов, чьи выделения не отслеживаются ASan.Добавлено в версии 3.6.
- --with-memory-sanitizer¶
Включить детектор ошибок выделения памяти MemorySanitizer,
msan(по умолчанию нет).Добавлено в версии 3.6.
- --with-undefined-behavior-sanitizer¶
Включить детектор неопределённого поведения UndefinedBehaviorSanitizer,
ubsan(по умолчанию нет).Добавлено в версии 3.6.
- --with-thread-sanitizer¶
Включает детектор гонок данных ThreadSanitizer,
tsan(по умолчанию выключено).Добавлено в версии 3.13.
3.3.10. Параметры компоновщика¶Linker options
Включает сборку разделяемой библиотеки Python:
libpython(по умолчанию выключено).
- --without-static-libpython¶
Не собирать
libpythonMAJOR.MINOR.aи не устанавливатьpython.o(собирается и устанавливается по умолчанию).Добавлено в версии 3.10.
- --enable-static-libpython-for-interpreter¶
Двоичный файл интерпретатора Python (
python3) не связывается с общей библиотекой Python; вместо этого интерпретатор статически связывается сlibpython, как если бы--enable-sharedне использовался, но общаяlibpythonпродолжает собираться (для использования другими программами).Эта опция ничего не делает, если
--enable-sharedне используется.По умолчанию (когда
-enable-sharedиспользуется) интерпретатор Python связывается с собранной общей библиотекой.Добавлено в версии 3.15.
3.3.11. Параметры библиотек¶Libraries options
- --with-libs='lib1 ...'¶
Линковаться с дополнительными библиотеками (по умолчанию нет).
- --with-system-expat¶
Собирать модуль
pyexpat, используя установленную библиотекуexpat(по умолчанию нет).
- --with-system-libmpdec¶
Собирать модуль расширения
_decimal, используя установленную библиотекуmpdecimal, см. модульdecimal(по умолчанию включено).Добавлено в версии 3.3.
Изменено в версии 3.13: По умолчанию используется установленная библиотека
mpdecimal.Изменено в версии 3.15: Встроенная копия библиотеки больше не будет выбираться неявно, если установленная библиотека
mpdecimalне найдена. Только в Python 3.15 её можно явно выбрать с помощью--with-system-libmpdec=noили--without-system-libmpdec.Устарело с версии 3.13, будет удалено в версии 3.16: Копия исходных кодов библиотеки
mpdecimalбольше не будет распространяться с Python 3.16.См. также
- --with-readline=readline|editline¶
Назначить библиотеку-бэкенд для модуля
readline.readline: использовать readline в качестве бэкенда.
editline: использовать 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.12. Параметры безопасности¶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 в качестве минимальной версии протокола.
- --disable-safety¶
Отключает параметры компилятора, которые рекомендуются OpenSSF из соображений безопасности без потери производительности. Если эта опция не включена, CPython будет собран с использованием безопасных параметров компилятора без замедления. Если эта опция включена, CPython не будет собран с параметрами компилятора, перечисленными ниже.
Следующие параметры компилятора отключаются с помощью
--disable-safety:-fstack-protector-strong: Включает проверки времени выполнения для переполнения буфера на стеке.
-Wtrampolines: Включает предупреждения о трамплинах, требующих исполняемых стеков.
Добавлено в версии 3.14.
- --enable-slower-safety¶
Включает параметры компилятора, которые рекомендуются OpenSSF из соображений безопасности, но требуют дополнительных затрат производительности. Если эта опция не включена, CPython не будет собран с использованием безопасных параметров компилятора, влияющих на производительность. Если эта опция включена, CPython будет собран с параметрами компилятора, перечисленными ниже.
Следующие параметры компилятора включаются с помощью
--enable-slower-safety:-D_FORTIFY_SOURCE=3: Укрепляет исходный код с помощью проверок во время компиляции и выполнения на предмет небезопасного использования libc и переполнения буфера.
Добавлено в версии 3.14.
3.3.13. Параметры macOS¶macOS 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).
- --with-app-store-compliance¶
- --with-app-store-compliance=PATCH-FILE¶
Стандартная библиотека Python содержит строки, которые, как известно, вызывают ошибки автоматических инструментов проверки при отправке на распространение через App Store macOS и iOS. Если этот параметр включён, будет применён список исправлений, которые устраняют несоответствия требованиям магазинов приложений. Можно также указать собственный файл исправлений. По умолчанию этот параметр отключён.
Добавлено в версии 3.13.
3.3.14. Параметры iOS¶iOS Options
См. iOS/README.rst.
- --enable-framework=INSTALLDIR¶
Создаёт Python.framework. В отличие от macOS, аргумент INSTALLDIR, указывающий путь установки, обязателен.
- --with-framework-name=FRAMEWORK¶
Задаёт имя для framework (по умолчанию:
Python).
3.3.15. Параметры кросс-компиляции¶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
- HOSTRUNNER¶
Программа, запускающая CPython на хост-платформе для кросс-компиляции.
Добавлено в версии 3.12.
Пример кросс-компиляции:
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¶Python 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/makesetupshell-скрипта;
3.4.2. Основные этапы сборки¶Main build steps
C-файлы (
.c) компилируются в объектные файлы (.o).Статическая библиотека
libpython(.a) создаётся из объектных файлов.python.oи статическая библиотекаlibpythonкомпонуются в итоговую программуpython.Расширения на C собираются с помощью Makefile (см.
Modules/Setup).
3.4.3. Основные цели Makefile¶Main Makefile targets
3.4.3.1. make¶
В большинстве случаев при пересборке после редактирования кода или обновления локальной копии из вышестоящего репозитория достаточно просто выполнить make, которая (согласно семантике Make) собирает цель по умолчанию – первую, определённую в Makefile. По традиции (в том числе в проекте CPython) это обычно цель all. Скрипт configure разворачивает переменную autoconf, @DEF_MAKE_ALL_RULE@, чтобы точно описать, какие цели будет собирать make
all. Доступны три варианта:
profile-opt(настроено с помощью--enable-optimizations)build_wasm(выбирается, если хост-платформа совпадает сwasm32-wasi*илиwasm32-emscripten)build_all(настроено без явного использования других вариантов)
В зависимости от последних изменений исходных файлов Make пересобирает все цели (объектные файлы и исполняемые), которые считает устаревшими, включая повторный запуск configure при необходимости. Однако зависимости между исходниками и целями многочисленны и поддерживаются вручную, поэтому иногда Make не располагает всей информацией, необходимой для правильного обнаружения всех целей, требующих пересборки. В зависимости от того, какие цели не были пересобраны, могут возникнуть различные проблемы. Если возникают проблемы со сборкой или тестированием, которые иначе не объяснить, make clean && make должен решить большинство проблем с зависимостями, хотя время сборки при этом увеличится.
3.4.3.2. make platform¶
Собрать программу python, но не собирать модули расширения стандартной библиотеки. В результате создаётся файл platform, содержащий одну строку с описанием платформы сборки, например macosx-14.3-arm64-3.12 или linux-x86_64-3.13.
3.4.3.3. make profile-opt¶
Собрать Python с профильной оптимизацией (PGO). Чтобы сделать это целью по умолчанию для команды make, можно использовать параметр configure --enable-optimizations (make all или просто make).
3.4.3.4. make clean¶
Удалить собранные файлы.
3.4.3.5. make distclean¶
Помимо работы, выполненной make clean, удалить файлы, созданные скриптом configure. Перед повторной сборкой потребуется запустить configure. [6]
3.4.3.6. make install¶
Собрать цель all и установить Python.
3.4.3.7. make test¶
Собрать цель all и запустить набор тестов Python с
опцией --fast-ci без GUI-тестов. Переменные:
TESTOPTS: дополнительные параметры командной строки regrtest.TESTPYTHONOPTS: дополнительные параметры командной строки Python.TESTTIMEOUT: тайм-аут в секундах (по умолчанию: 10 минут).
3.4.3.8. make ci¶
Это похоже на make test, но использует -ugui для запуска также GUI-тестов.
Добавлено в версии 3.14.
3.4.3.9. make buildbottest¶
Это похоже на make test, но использует опцию --slow-ci
и тайм-аут по умолчанию 20 минут вместо опции --fast-ci.
3.4.3.10. make regen-all¶
Перегенерировать (почти) все сгенерированные файлы. Они включают (но не
ограничиваются) случаи байткода и файл генератора парсера.
make regen-stdlib-module-names и autoconf должны быть запущены
отдельно для остальных сгенерированных файлов.
3.4.4. Расширения C¶C 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.
- CFLAGS_CEVAL¶
Флаги, используемые для компиляции
Python/ceval.c.Добавлено в версии 3.14.5.
- 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должны содержать значение оболочки, чтобы можно было собирать модули расширения, используя каталоги, указанные в переменных окружения.Рекомендуется использовать
EXE_LDFLAGS, если предоставленные флаги компоновщика относятся к конкретному исполняемому файлу, например к флагу-pieGCC.
- 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.
- EXE_LDFLAGS¶
Флаги компоновщика, используемые для сборки исполняемых целей, например интерпретатора. Если они указаны,
PY_CORE_EXE_LDFLAGSбудут использоваться вместоPY_CORE_LDFLAGS.Добавлено в версии 3.15.
- CONFIGURE_EXE_LDFLAGS¶
Значение переменной
EXE_LDFLAGS, передаваемое сценарию./configure.Добавлено в версии 3.15.
- PY_CORE_EXE_LDFLAGS¶
Флаги компоновщика, используемые для сборки интерпретатора и исполняемых целей.
По умолчанию:
$(PY_CORE_LDFLAGS)Добавлено в версии 3.15.
Сноски
git clean -fdx – ещё более радикальный способ «очистить»
рабочую копию. Он удаляет все файлы, не известные Git.
При поиске ошибок с помощью git bisect это
рекомендуется между проверками
для гарантии полностью чистой сборки. Используйте с осторожностью, так как
будут удалены все файлы, не отслеживаемые Git, включая
ваши новые, несохранённые наработки.
Эта страница – перевод. Оригинал на английском – docs.python.org. Нашли неточность? Сообщите нам.