列表所有
./configure
脚本选项使用:
./configure --help
另请参阅
Misc/SpecialBuilds.txt
在 Python 源分发。
支持可加载扩展在
_sqlite
extension module (default is no).
见
sqlite3.Connection.enable_load_extension()
方法在
sqlite3
模块。
3.6 版新增。
Define the size in bits of Python
int
digits: 15 or 30 bits.
By default, the digit size is 30.
定义
PYLONG_BITS_IN_DIGIT
to
15
or
30
.
Compile the Python
main()
function and link Python executable with C++ compiler:
$CXX
,或
COMPILER
if specified.
Set the Python executable suffix to SUFFIX .
The default suffix is
.exe
on Windows and macOS (
python.exe
executable),
.js
on Emscripten node,
.html
on Emscripten browser,
.wasm
on WASI, and an empty string on other platforms (
python
executable).
3.11 版改变:
The default suffix on WASM platform is one of
.js
,
.html
or
.wasm
.
Select the default time zone search path for
zoneinfo.TZPATH
。见
编译时配置
的
zoneinfo
模块。
默认:
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
.
见
os.pathsep
path separator.
3.9 版新增。
Build the
_decimal
extension module using a thread-local context rather than a coroutine-local context (default), see the
decimal
模块。
见
decimal.HAVE_CONTEXTVAR
和
contextvars
模块。
3.9 版新增。
Override order to check db backends for the
dbm
模块
A valid value is a colon (
:
) separated string with the backend names:
ndbm
;
gdbm
;
bdb
.
Disable C locale coercion to a UTF-8 based locale (enabled by default).
Don’t define the
PY_COERCE_C_LOCALE
宏。
见
PYTHONCOERCECLOCALE
和
PEP 538
.
Python library directory name (default is
lib
).
Fedora and SuSE use
lib64
on 64-bit platforms.
见
sys.platlibdir
.
3.9 版新增。
Directory of wheel packages used by the
ensurepip
module (none by default).
Some Linux distribution packaging policies recommend against bundling dependencies. For example, Fedora installs wheel packages in the
/usr/share/python-wheels/
directory and don’t install the
ensurepip._bundled
包。
3.10 版新增。
Whether configure should use pkg-config to detect build dependencies.
check
(default):
pkg-config
is optional
yes
:
pkg-config
is mandatory
no
: configure does not use
pkg-config
even when present
3.11 版新增。
Turn on internal statistics gathering.
The statistics will be dumped to a arbitrary (probably unique) file in
/tmp/py_stats/
,或
C:\temp\py_stats\
在 Windows。
使用
Tools/scripts/summarize_stats.py
to read the stats.
3.11 版新增。
Set build flavor for
wasm32-emscripten
.
browser
(default): preload minimal stdlib, default MEMFS.
node
: NODERAWFS and pthread support.
3.11 版新增。
Turn on dynamic linking support for WASM.
Dynamic linking enables
dlopen
. File size of the executable increases due to limited dead code elimination and additional features.
3.11 版新增。
Turn on pthreads support for WASM.
3.11 版新增。
Don’t build nor install test modules, like the
test
package or the
_testcapi
extension module (built and installed by default).
3.10 版新增。
Select the
ensurepip
command run on Python installation:
upgrade
(default): run
python -m ensurepip --altinstall --upgrade
命令。
install
: run
python -m ensurepip --altinstall
command;
no
: don’t run ensurepip;
3.6 版新增。
Configuring Python using
--enable-optimizations --with-lto
(PGO + LTO) is recommended for best performance.
Enable Profile Guided Optimization (PGO) using
PROFILE_TASK
(disabled by default).
The C compiler Clang requires
llvm-profdata
program for PGO. On macOS, GCC also requires it: GCC is just an alias to Clang on macOS.
Disable also semantic interposition in libpython if
--enable-shared
and GCC is used: add
-fno-semantic-interposition
to the compiler and linker flags.
3.6 版新增。
3.10 版改变:
使用
-fno-semantic-interposition
on GCC.
Environment variable used in the Makefile: Python command line arguments for the PGO generation task.
默认:
-m test --pgo --timeout=$(TESTTIMEOUT)
.
3.8 版新增。
Enable Link Time Optimization (LTO) in any build (disabled by default).
The C compiler Clang requires
llvm-ar
for LTO (
ar
on macOS), as well as an LTO-aware linker (
ld.gold
or
lld
).
3.6 版新增。
3.11 版新增:
To use ThinLTO feature, use
--with-lto=thin
on Clang.
Enable computed gotos in evaluation loop (enabled by default on supported compilers).
Disable the specialized Python memory allocator pymalloc (enabled by default).
另请参阅
PYTHONMALLOC
环境变量。
Disable static documentation strings to reduce the memory footprint (enabled by default). Documentation strings defined in Python are not affected.
Don’t define the
WITH_DOC_STRINGS
宏。
见
PyDoc_STRVAR()
宏。
Enable C-level code profiling with
gprof
(disabled by default).
A debug build is Python built with the
--with-pydebug
configure option.
Effects of a debug build:
Display all warnings by default: the list of default warning filters is empty in the
warnings
模块。
添加
d
to
sys.abiflags
.
添加
sys.gettotalrefcount()
函数。
添加
-X showrefcount
命令行选项。
添加
PYTHONTHREADDEBUG
环境变量。
Add support for the
__lltrace__
variable: enable low-level tracing in the bytecode evaluation loop if the variable is defined.
安装 debug hooks on memory allocators to detect buffer overflow and other memory errors.
Define
Py_DEBUG
and
Py_REF_DEBUG
宏。
Add runtime checks: code surrounded by
#ifdef Py_DEBUG
and
#endif
. Enable
assert(...)
and
_PyObject_ASSERT(...)
assertions: don’t set the
NDEBUG
macro (see also the
--with-assertions
configure option). Main runtime checks:
Add sanity checks on the function arguments.
Unicode and int objects are created with their memory filled with a pattern to detect usage of uninitialized objects.
Ensure that functions which can clear or replace the current exception are not called with an exception raised.
Check that deallocator functions don’t change the current exception.
The garbage collector (
gc.collect()
function) runs some basic checks on objects consistency.
Py_SAFE_DOWNCAST()
macro checks for integer underflow and overflow when downcasting from wide types to narrow types.
另请参阅
Python 开发模式
和
--with-trace-refs
configure option.
3.8 版改变:
发行构建和调试构建现在兼容 ABI:定义的
Py_DEBUG
宏不再隐含
Py_TRACE_REFS
macro (see the
--with-trace-refs
option), which introduces the only ABI incompatibility.
Build Python in debug mode
: define the
Py_DEBUG
macro (disabled by default).
Enable tracing references for debugging purpose (disabled by default).
Effects:
定义
Py_TRACE_REFS
宏。
添加
sys.getobjects()
函数。
添加
PYTHONDUMPREFS
环境变量。
This build is not ABI compatible with release build (default build) or debug build (
Py_DEBUG
and
Py_REF_DEBUG
macros).
3.8 版新增。
Build with C assertions enabled (default is no):
assert(...);
and
_PyObject_ASSERT(...);
.
If set, the
NDEBUG
macro is not defined in the
OPT
compiler variable.
另请参阅
--with-pydebug
option (
调试构建
) which also enables assertions.
3.6 版新增。
Enable Valgrind support (default is no).
Enable DTrace support (default is no).
见 采用 DTrace 和 SystemTap 仪表 CPython .
3.6 版新增。
Enable AddressSanitizer memory error detector,
asan
(default is no).
3.6 版新增。
Enable MemorySanitizer allocation error detector,
msan
(default is no).
3.6 版新增。
Enable UndefinedBehaviorSanitizer undefined behaviour detector,
ubsan
(default is no).
3.6 版新增。
Enable building a shared Python library:
libpython
(default is no).
Do not build
libpythonMAJOR.MINOR.a
and do not install
python.o
(built and enabled by default).
3.10 版新增。
Link against additional libraries (default is no).
Build the
pyexpat
module using an installed
expat
library (default is no).
Build the
_ctypes
extension module using an installed
ffi
library, see the
ctypes
module (default is system-dependent).
Build the
_decimal
extension module using an installed
mpdec
library, see the
decimal
module (default is no).
3.3 版新增。
使用
editline
library for backend of the
readline
模块。
定义
WITH_EDITLINE
宏。
3.10 版新增。
Don’t build the
readline
module (built by default).
Don’t define the
HAVE_LIBREADLINE
宏。
3.10 版新增。
Override
libm
math library to
STRING
(default is system-dependent).
Override
libc
C library to
STRING
(default is system-dependent).
Root of the OpenSSL directory.
3.7 版新增。
Set runtime library directory (rpath) for OpenSSL libraries:
no
(default): don’t set rpath;
auto
: auto-detect rpath from
--with-openssl
and
pkg-config
;
DIR : set an explicit rpath.
3.10 版新增。
Select hash algorithm for use in
Python/pyhash.c
:
siphash13
(default);
siphash24
;
fnv
.
3.4 版新增。
3.11 版新增:
siphash13
is added and it is the new default.
Built-in hash modules:
md5
;
sha1
;
sha256
;
sha512
;
sha3
(with shake);
blake2
.
3.9 版新增。
Override the OpenSSL default cipher suites string:
python
(default): use Python’s preferred selection;
openssl
: leave OpenSSL’s defaults untouched;
STRING : use a custom string
见
ssl
模块。
3.7 版新增。
3.10 版改变:
The settings
python
and
STRING
also set TLS 1.2 as minimum protocol version.
见
Mac/README.rst
.
Create a universal binary build. SDKDIR specifies which macOS SDK should be used to perform the build (default is no).
Create a Python.framework rather than a traditional Unix install. Optional INSTALLDIR specifies the installation path (default is no).
Specify the kind of universal binary that should be created. This option is only valid when
--enable-universalsdk
有设置。
Options:
universal2
;
32-bit
;
64-bit
;
3-way
;
intel
;
intel-32
;
intel-64
;
all
.
Specify the name for the python framework on macOS only valid when
--enable-framework
is set (default:
Python
).
Cross compiling, also known as cross building, can be used to build Python for another CPU architecture or platform. Cross compiling requires a Python interpreter for the build platform. The version of the build Python must match the version of the cross compiled host Python.
configure for building on BUILD, usually guessed by config.guess .
cross-compile to build programs to run on HOST (target platform)
path to build
python
binary for cross compiling
3.11 版新增。
An environment variable that points to a file with configure overrides.
范例 config.site 文件:
# config.site-aarch64 ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no
Cross compiling example:
CONFIG_SITE=config.site-aarch64 ../configure \ --build=x86_64-pc-linux-gnu \ --host=aarch64-unknown-linux-gnu \ --with-build-python=../x86_64/python
configure.ac
=>
configure
;
Makefile.pre.in
=>
Makefile
(创建通过
configure
);
pyconfig.h
(创建通过
configure
);
Modules/Setup
: C extensions built by the Makefile using
Module/makesetup
shell script;
setup.py
:构建 C 扩展使用
distutils
模块。
C 文件 (
.c
) are built as object files (
.o
).
A static
libpython
library (
.a
) is created from objects files.
python.o
and the static
libpython
library are linked into the final
python
program.
C extensions are built by the Makefile (see
Modules/Setup
) 和
python setup.py build
.
make
: Build Python with the standard library.
make platform:
: build the
python
program, but don’t build the standard library extension modules.
make profile-opt
: build Python using Profile Guided Optimization (PGO). You can use the configure
--enable-optimizations
option to make this the default target of the
make
命令 (
make all
or just
make
).
make buildbottest
: Build Python and run the Python test suite, the same way than buildbots test Python. Set
TESTTIMEOUT
variable (in seconds) to change the test timeout (1200 by default: 20 minutes).
make install
: Build and install Python.
make regen-all
: Regenerate (almost) all generated files;
make regen-stdlib-module-names
and
autoconf
must be run separately for the remaining generated files.
make clean
: Remove built files.
make distclean
: Same than
make clean
, but remove also files created by the configure script.
Some C extensions are built as built-in modules, like the
sys
module. They are built with the
Py_BUILD_CORE_BUILTIN
macro defined. Built-in modules have no
__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__'
Other C extensions are built as dynamic libraries, like the
_asyncio
module. They are built with the
Py_BUILD_CORE_MODULE
macro defined. Example on 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
is used to generate Makefile targets to build C extensions. At the beginning of the files, C extensions are built as built-in modules. Extensions defined after the
*shared*
marker are built as dynamic libraries.
setup.py
script only builds C extensions as shared libraries using the
distutils
模块。
PyAPI_FUNC()
,
PyAPI_API()
and
PyMODINIT_FUNC()
macros of
Include/pyport.h
are defined differently depending if the
Py_BUILD_CORE_MODULE
macro is defined:
使用
Py_EXPORTED_SYMBOL
若
Py_BUILD_CORE_MODULE
is defined
使用
Py_IMPORTED_SYMBOL
否则。
若
Py_BUILD_CORE_BUILTIN
macro is used by mistake on a C extension built as a shared library, its
PyInit_xxx()
function is not exported, causing an
ImportError
on import.
Options set by the
./configure
script and environment variables and used by
Makefile
.
Value of
CPPFLAGS
variable passed to the
./configure
脚本。
3.6 版新增。
(Objective) C/C++ preprocessor flags, e.g.
-I<include dir>
if you have headers in a nonstandard directory
<include dir>
.
Both
CPPFLAGS
and
LDFLAGS
need to contain the shell’s value for setup.py to be able to build extension modules using the directories specified in the environment variables.
3.4 版新增。
Extra preprocessor flags added for building the interpreter object files.
默认:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
.
3.2 版新增。
C compiler command.
范例:
gcc -pthread
.
C compiler command used to build the
main()
function of programs like
python
.
Variable set by the
--with-cxx-main
option of the configure script.
默认:
$(CC)
.
C++ compiler command.
Used if the
--with-cxx-main
option is used.
范例:
g++ -pthread
.
C compiler flags.
CFLAGS_NODIST
is used for building the interpreter and stdlib C extensions. Use it when a compiler flag should
not
be part of the distutils
CFLAGS
once Python is installed (
bpo-21121
).
In particular,
CFLAGS
should not contain:
the compiler flag
-I
(for setting the search path for include files). The
-I
flags are processed from left to right, and any flags in
CFLAGS
would take precedence over user- and package-supplied
-I
标志。
hardening flags such as
-Werror
because distributions cannot control whether packages installed by users conform to such heightened standards.
3.5 版新增。
Extra C compiler flags.
Value of
CFLAGS_NODIST
variable passed to the
./configure
脚本。
3.5 版新增。
Base compiler flags.
Optimization flags.
Strict or non-strict aliasing flags used to compile
Python/dtoa.c
.
3.7 版新增。
Compiler flags used to build a shared library.
例如,
-fPIC
is used on Linux and on BSD.
Extra C flags added for building the interpreter object files.
默认:
$(CCSHARED)
当
--enable-shared
is used, or an empty string otherwise.
默认:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
.
默认:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal
.
3.5 版新增。
C flags used for building the interpreter object files.
默认:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
.
3.7 版新增。
默认:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
.
3.2 版新增。
Compiler flags to build a standard library extension module as a built-in module, like the
posix
模块。
默认:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
.
3.8 版新增。
Purify command. Purify is a memory debugger program.
Default: empty string (not used).
Linker command used to build programs like
python
and
_testembed
.
默认:
$(PURIFY) $(MAINCC)
.
Value of
LDFLAGS
variable passed to the
./configure
脚本。
Avoid assigning
CFLAGS
,
LDFLAGS
, etc. so users can use them on the command line to append to these values without stomping the pre-set values.
3.2 版新增。
LDFLAGS_NODIST
is used in the same manner as
CFLAGS_NODIST
. Use it when a linker flag should
not
be part of the distutils
LDFLAGS
once Python is installed (
bpo-35257
).
In particular,
LDFLAGS
should not contain:
the compiler flag
-L
(for setting the search path for libraries). The
-L
flags are processed from left to right, and any flags in
LDFLAGS
would take precedence over user- and package-supplied
-L
标志。
Value of
LDFLAGS_NODIST
variable passed to the
./configure
脚本。
3.8 版新增。
Linker flags, e.g.
-L<lib dir>
if you have libraries in a nonstandard directory
<lib dir>
.
Both
CPPFLAGS
and
LDFLAGS
need to contain the shell’s value for setup.py to be able to build extension modules using the directories specified in the environment variables.
Linker flags to pass libraries to the linker when linking the Python executable.
范例:
-lrt
.
Command to build a shared library.
默认:
@LDSHARED@ $(PY_LDFLAGS)
.
Command to build
libpython
shared library.
默认:
@BLDSHARED@ $(PY_CORE_LDFLAGS)
.
默认:
$(CONFIGURE_LDFLAGS) $(LDFLAGS)
.
默认:
$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
.
3.8 版新增。
Linker flags used for building the interpreter object files.
3.8 版新增。