Spec-Zone.ru › Python 3.10

Настройка Python

3.1. Параметры конфигурации

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

./configure --help

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

3.1.1. Общие параметры

--enable-loadable-sqlite-extensions

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

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

Введено в версии 3.6.

--disable-ipv6

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

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

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

По умолчанию количество бит выбирается в зависимости от sizeof(void*): 30 бит, если размер void* 64 бита или больше, иначе 15 бит.

Определить 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 и macOS (python.exe исполняемый файл), и пустой строке на других платформах (python исполняемый файл).

--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=db1:db2:...

Переопределить порядок проверки бэкендов баз данных для модуля dbm

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

  • ndbm;
  • gdbm;
  • bdb.
--without-c-locale-coercion

Отключить приведение C locale к locale на основе 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 устанавливает колесные пакеты в каталог /usr/share/python-wheels/ и не устанавливает пакет ensurepip._bundled.

Введено в версии 3.10.

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

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

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

--enable-optimizations

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

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

Также отключите семантическую интерпозицию в 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

Включить оптимизацию на этапе линковки (LTO) в любом билде (по умолчанию отключено).

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

Новое в версии 3.6.

--with-computed-gotos

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

--without-pymalloc

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

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

--without-doc-strings

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

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

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

--enable-profiling

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

3.1.4. Отладочная сборка Python

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

Последствия отладочной сборки:

  • По умолчанию отображаются все предупреждения: список фильтров предупреждений по умолчанию пустой в модуле warnings.
  • Добавить d в sys.abiflags.
  • Добавить функцию sys.gettotalrefcount().
  • Добавить опцию командной строки -X showrefcount.
  • Добавить переменную окружения PYTHONTHREADDEBUG.
  • Добавить поддержку переменной __ltrace__: включить отслеживание низкого уровня в цикле вычисления байт-кода, если переменная определена.
  • Установить отладочные обработчики для менеджеров памяти для обнаружения переполнения буфера и других ошибок памяти.
  • Определить макросы Py_DEBUG и Py_REF_DEBUG.
  • Добавить проверки во время выполнения: код, окруженный #ifdef Py_DEBUG и #endif. Включить проверки assert(...) и _PyObject_ASSERT(...): не устанавливать макрос NDEBUG (см. также опцию конфигурации --with-assertions). Основные проверки во время выполнения:

    • Добавить проверки корректности аргументов функций.
    • Объекты Unicode и int создаются с заполнением памяти шаблоном для обнаружения использования неопределенных объектов.
    • Убедиться, что функции, которые могут очистить или заменить текущее исключение, не вызываются с поднятым исключением.
    • Сборщик мусора (gc.collect() функция) выполняет некоторые базовые проверки согласованности объектов.
    • Макрос Py_SAFE_DOWNCAST() проверяет целочисленные подтечения и переполнения при преобразовании из широких типов в узкие.

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

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

3.1.5. Опции отладки

--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.1.6. Опции линковщика

--enable-shared

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

--without-static-libpython

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

Новое в версии 3.10.

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

--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-tcltk-includes='-I...'

Переопределить поиск файлов заголовков Tcl и Tk.

--with-tcltk-libs='-L...'

Переопределить поиск библиотек Tcl и Tk.

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

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

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

  • siphash24 (по умолчанию).
  • fnv;

Новое в версии 3.4.

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

См. Mac/README.rst.

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

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

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

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

--with-universal-archs=ARCH

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

Варианты:

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

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

3.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) создается из объектных файлов.
  • 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 с использованием Profile Guided Optimization (PGO). Можно использовать опцию конфигурации --enable-optimizations, чтобы сделать её целевой задачей команды make (make all или просто make).
  • make buildbottest: Сборка Python и запуск набора тестов Python, так же, как buildbots тестируют Python. Измените переменную TESTTIMEOUT (в секундах), чтобы изменить время ожидания теста (по умолчанию 1200: 20 минут).
  • make install: Сборка и установка Python.
  • make regen-stdlib-module-names и autoconf должны выполняться отдельно для оставшихся сгенерированных файлов.
  • make clean: Удаление скомпилированных файлов.
  • make distclean: То же, что и make clean, но также удаляются файлы, созданные скриптом конфигурации.

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_API() и 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

(Объективные) флаги препроцессора C/C++, например, -I<include 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

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

Пример: gcc -pthread.

MAINCC

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

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

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

CXX

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

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

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

CFLAGS

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

CFLAGS_NODIST

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

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

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

Введено в версии 3.5.

EXTRA_CFLAGS

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

CONFIGURE_CFLAGS

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

Введено в версии 3.2.

CONFIGURE_CFLAGS_NODIST

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

Введено в версии 3.5.

BASECFLAGS

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

OPT

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

CFLAGS_ALIASING

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

Введено в версии 3.7.

CCSHARED

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

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

CFLAGSFORSHARED

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

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

PY_CFLAGS

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

PY_CFLAGS_NODIST

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

Введено в версии 3.5.

PY_STDMODULE_CFLAGS

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

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

Введено в версии 3.7.

PY_CORE_CFLAGS

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

Введено в версии 3.2.

PY_BUILTIN_MODULE_CFLAGS

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

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

Введено в версии 3.8.

PURIFY

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

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

END_OF_DOCUMENT_MARKER

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

Флаги компоновщика, например, -L<lib 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.

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

Spec-Zone.ru

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