3. Configurar Python¶
3.1. Build Requirements¶
Features required to build CPython:
A C11 compiler. Optional C11 features are not required.
Support for IEEE 754 floating point numbers and floating point Not-a-Number (NaN).
Support for threads.
On Windows, Microsoft Visual Studio 2017 or later is required.
Distinto en la versión 3.11: C11 compiler, IEEE 754 and NaN support are now required. On Windows, Visual Studio 2017 or later is required.
Distinto en la versión 3.10: OpenSSL 1.1.1 is now required.
Distinto en la versión 3.7: Thread support and OpenSSL 1.0.2 are now required.
Distinto en la versión 3.6: Selected C99 features are now required, like <stdint.h>
and static
inline
functions.
Distinto en la versión 3.5: On Windows, Visual Studio 2015 or later is required.
See also PEP 7 «Style Guide for C Code» and PEP 11 «CPython platform support».
3.2. Configurar opciones¶
Enumerar todas las opciones del script ./configure
usando:
./configure --help
Consultar también Misc/SpecialBuilds.txt
en la distribución fuente de Python.
3.2.1. Opciones generales¶
- --enable-loadable-sqlite-extensions¶
Admite extensiones cargables en el módulo de extensión
_sqlite
(el valor por defecto es no).Consultar el método
sqlite3.Connection.enable_load_extension()
del módulosqlite3
.Nuevo en la versión 3.6.
- --disable-ipv6¶
Deshabilita la compatibilidad con IPv6 (habilitada de forma predeterminada si es compatible), consulte el módulo
socket
.
- --enable-big-digits=[15|30]¶
Define el tamaño en bits de los dígitos
int
de Python: 15 o 30 bits.Por defecto, el tamaño del dígito es 30.
Define el
PYLONG_BITS_IN_DIGIT
en15
o30
.Consultar
sys.int_info.bits_per_digit
.
- --with-suffix=SUFFIX¶
Establece el sufijo ejecutable de Python en SUFFIX.
El sufijo predeterminado es
.exe
en Windows y macOS (ejecutablepython.exe
),.js
en el nodo Emscripten,.html
en el navegador Emscripten,.wasm
en WASI y una cadena vacía en otras plataformas (ejecutablepython
).Distinto en la versión 3.11: El sufijo predeterminado en la plataforma WASM es uno de
.js
,.html
o.wasm
.
- --with-tzpath=<list of absolute paths separated by pathsep>¶
Selecciona la ruta de búsqueda de zona horaria predeterminada para
zoneinfo.TZPATH
. Consultar la Configuración en tiempo de compilación del módulozoneinfo
.Por defecto:
/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo
.Consultar separador de rutas
os.pathsep
.Nuevo en la versión 3.9.
- --without-decimal-contextvar¶
Construye el módulo de extensión
_decimal
usando un contexto local de hilos en lugar de un contexto local de corutinas (predeterminado), consultar el módulodecimal
.Consultar
decimal.HAVE_CONTEXTVAR
y el módulocontextvars
.Nuevo en la versión 3.9.
- --with-dbmliborder=<list of backend names>¶
Sobrescribe el orden para verificar los de las bases datos para el módulo
dbm
Un valor válido es una cadena de caracteres separada por dos puntos (
:
) con los nombres de los backends:ndbm
;gdbm
;bdb
.
- --without-c-locale-coercion¶
Deshabilita la coerción de configuración regional C a una configuración regional basada en UTF-8 (habilitada de forma predeterminada).
No define la macro
PY_COERCE_C_LOCALE
.Consultar
PYTHONCOERCECLOCALE
y el PEP 538.
- --without-freelists¶
Disable all freelists except the empty tuple singleton.
Nuevo en la versión 3.11.
- --with-platlibdir=DIRNAME¶
Nombre del directorio de la biblioteca de Python (por defecto es
lib
).Fedora y SuSE usan
lib64
en plataformas 64-bit.Consultar
sys.platlibdir
.Nuevo en la versión 3.9.
- --with-wheel-pkg-dir=PATH¶
Directorio de los paquetes wheel usados por el módulo
ensurepip
(ninguno por defecto)Algunas políticas de empaquetado de distribución de Linux recomiendan no empaquetar dependencias. Por ejemplo, Fedora instala paquetes wheel en el directorio
/usr/share/python-wheels/
y no instala el paqueteensurepip._bundled
.Nuevo en la versión 3.10.
- --with-pkg-config=[check|yes|no]¶
Si configure debe usar pkg-config para detectar dependencias de compilación.
check
(predeterminado): pkg-config es opcionalyes
: pkg-config es obligatoriono
: configure no usa pkg-config incluso cuando está presente
Nuevo en la versión 3.11.
- --enable-pystats¶
Active la recopilación de estadísticas internas.
The statistics will be dumped to a arbitrary (probably unique) file in
/tmp/py_stats/
, orC:\temp\py_stats\
on Windows. If that directory does not exist, results will be printed on stdout.Usa
Tools/scripts/summarize_stats.py
para leer las estadísticas.Nuevo en la versión 3.11.
3.2.2. Opciones de WebAssembly¶
- --with-emscripten-target=[browser|node]¶
Establezca el tipo de compilación para
wasm32-emscripten
.browser
(predeterminado): precarga mínima stdlib, MEMFS predeterminado.node
: soporte para NODERAWFS y pthread.
Nuevo en la versión 3.11.
- --enable-wasm-dynamic-linking¶
Active la compatibilidad con enlaces dinámicos para WASM.
La vinculación dinámica habilita
dlopen
. El tamaño del archivo del ejecutable aumenta debido a la eliminación limitada de código muerto y características adicionales.Nuevo en la versión 3.11.
- --enable-wasm-pthreads¶
Active la compatibilidad con pthreads para WASM.
Nuevo en la versión 3.11.
3.2.3. Opciones de instalación¶
- --prefix=PREFIX¶
Install architecture-independent files in PREFIX. On Unix, it defaults to
/usr/local
.This value can be retrived at runtime using
sys.prefix
.As an example, one can use
--prefix="$HOME/.local/"
to install a Python in its home directory.
- --exec-prefix=EPREFIX¶
Install architecture-dependent files in EPREFIX, defaults to
--prefix
.This value can be retrived at runtime using
sys.exec_prefix
.
- --disable-test-modules¶
No construya ni instale módulos de prueba, como el paquete
test
o el módulo de extensión_testcapi
(construido e instalado por defecto).Nuevo en la versión 3.10.
- --with-ensurepip=[upgrade|install|no]¶
Selecciona el comando
ensurepip
que se ejecuta en la instalación de Python:upgrade
(por defecto): ejecutar el comandopython -m ensurepip --altinstall --upgrade
.install
: ejecutar el comandopython -m ensurepip --altinstall
;no
: no ejecuta ensurepip;
Nuevo en la versión 3.6.
3.2.4. Opciones de desempeño¶
Configuring Python using --enable-optimizations --with-lto
(PGO + LTO) is
recommended for best performance. The experimental --enable-bolt
flag can
also be used to improve performance.
- --enable-optimizations¶
Habilite la Optimización Guiada por Perfiles (PGO por sus siglas en inglés) usando
PROFILE_TASK
(deshabilitado de forma predeterminada).El compilador de C Clang requiere el programa
llvm-profdata
para PGO. En macOS, GCC también lo requiere: GCC es solo un alias de Clang en macOS.Desactiva también la interposición semántica en libpython si se usa
--enable-shared
y GCC: agregar-fno-semantic-interposition
a los flags del compilador y del enlazador.Nuevo en la versión 3.6.
Distinto en la versión 3.10: Usar
-fno-semantic-interposition
en GCC.
- PROFILE_TASK¶
Variable de entorno utilizada en el Makefile: argumentos de la línea de comando Python para la tarea de generación de PGO.
Por defecto:
-m test --pgo --timeout=$(TESTTIMEOUT)
.Nuevo en la versión 3.8.
- --with-lto=[full|thin|no|yes]¶
Habilita la Optimización de Tiempo de Enlace (LTO por sus siglas en inglés) en cualquier compilación (deshabilitado de forma predeterminada).
El compilador de C Clang requiere
llvm-ar
para LTO (ar
en macOS), así como un enlazador compatible con LTO (ld.gold
olld
).Nuevo en la versión 3.6.
Nuevo en la versión 3.11: Para usar la función ThinLTO, use
--with-lto=thin
en Clang.Distinto en la versión 3.12: Use ThinLTO as the default optimization policy on Clang if the compiler accepts the flag.
- --enable-bolt¶
Enable usage of the BOLT post-link binary optimizer (disabled by default).
BOLT is part of the LLVM project but is not always included in their binary distributions. This flag requires that
llvm-bolt
andmerge-fdata
are available.BOLT is still a fairly new project so this flag should be considered experimental for now. Because this tool operates on machine code its success is dependent on a combination of the build environment + the other optimization configure args + the CPU architecture, and not all combinations are supported. BOLT versions before LLVM 16 are known to crash BOLT under some scenarios. Use of LLVM 16 or newer for BOLT optimization is strongly encouraged.
The
BOLT_INSTRUMENT_FLAGS
andBOLT_APPLY_FLAGS
configure variables can be defined to override the default set of arguments for llvm-bolt to instrument and apply BOLT data to binaries, respectively.Nuevo en la versión 3.12.
- --with-computed-gotos¶
Habilita los gotos calculados en el ciclo de evaluación (habilitado de forma predeterminada en los compiladores compatibles).
- --without-pymalloc¶
Deshabilita el asignador de memoria especializado de Python pymalloc (habilitado de forma predeterminada).
Consultar también la variable de entorno
PYTHONMALLOC
.
- --without-doc-strings¶
Deshabilita las cadenas de caracteres de documentación estáticas para reducir el espacio de memoria (habilitado de forma predeterminada). Las cadenas de caracteres de documentación definidas en Python no se ven afectadas.
No define la macro
WITH_DOC_STRINGS
.Consultar la macro
PyDoc_STRVAR()
.
- --enable-profiling¶
Habilita el análisis de rendimiento de código (profiling) de nivel C con
gprof
(deshabilitado de forma predeterminada).
- --with-strict-overflow¶
Add
-fstrict-overflow
to the C compiler flags (by default we add-fno-strict-overflow
instead).
3.2.5. Compilación de depuración de Python¶
Una compilación de depuración es Python construido con la opción de configuración --with-pydebug
.
Efectos de una compilación de depuración:
Muestra todas las advertencias de forma predeterminada: la lista de filtros de advertencia predeterminados está vacía en el módulo
warnings
.Agrega
d
asys.abiflags
.Agrega la función
sys.gettotalrefcount()
.Agrega la opción de línea de comando
-X showrefcount
.Add
-d
command line option andPYTHONDEBUG
environment variable to debug the parser.Agregue soporte para la variable
__lltrace__
: habilite el seguimiento de bajo nivel en el ciclo de evaluación del código de bytes si la variable está definida.Instala ganchos de depuración en los asignadores de memoria para detectar el desbordamiento del búfer y otros errores de memoria.
Define las macros
Py_DEBUG
yPy_REF_DEBUG
.Agregue verificaciones de tiempo de ejecución: código rodeado por
#ifdef Py_DEBUG
y#endif
. Habilite las asercionesassert(...)
y_PyObject_ASSERT(...)
: no configure la macroNDEBUG
(vea también la opción de configuración--with-assertions
). Comprobaciones principales de tiempo de ejecución:Agregue controles de sanidad en los argumentos de la función.
Los objetos unicode e int se crean con su memoria completa con un patrón para detectar el uso de objetos no inicializados.
Asegúrese de que las funciones que pueden borrar o reemplazar la excepción actual no se invocan con una excepción lanzada.
Verifique que las funciones de desasignador no cambien la excepción actual.
El recolector de basura (función
gc.collect()
) ejecuta algunas comprobaciones básicas sobre la consistencia de los objetos.La macro
Py_SAFE_DOWNCAST()
comprueba el subdesbordamiento y el desbordamiento de enteros al realizar una conversión descendente de tipos anchos a tipos estrechos.
Consultar también Modo de Desarrollo de Python y la opción de configuración --with-trace-refs
.
Distinto en la versión 3.8: Las compilaciones de lanzamiento y las compilaciones de depuración ahora son compatibles con ABI: definir la macro Py_DEBUG
ya no implica la macro Py_TRACE_REFS
(consultar la opción --with-trace-refs
), que presenta la única Incompatibilidad ABI.
3.2.6. Opciones de depuración¶
- --with-pydebug¶
Compila Python en modo de depuración: define la macro
Py_DEBUG
(deshabilitada por defecto).
- --with-trace-refs¶
Habilita las referencias de seguimiento con fines de depuración (deshabilitado de forma predeterminada).
Efectos:
Define la macro
Py_TRACE_REFS
.Agrega la función
sys.getobjects()
.Agrega la variable de entorno
PYTHONDUMPREFS
.
Esta compilación no es ABI compatible con la compilación de lanzamiento (compilación predeterminada) o la compilación de depuración (macros
Py_DEBUG
yPy_REF_DEBUG
).Nuevo en la versión 3.8.
- --with-assertions¶
Compila con las aserciones de C habilitadas (el valor predeterminado es no):
assert(...);
y_PyObject_ASSERT(...);
.Si se establece, la macro
NDEBUG
no está definida en la variable del compiladorOPT
.Consultar también la opción
--with-pydebug
(compilación de depuración) que también habilita las aserciones.Nuevo en la versión 3.6.
- --with-valgrind¶
Habilite la compatibilidad con Valgrind (el valor predeterminado es no).
- --with-dtrace¶
Habilite la compatibilidad con DTrace (el valor predeterminado es no).
Consultar Instrumentación de CPython con DTrace y SystemTap.
Nuevo en la versión 3.6.
- --with-address-sanitizer¶
Habilita el detector de errores de memoria AddressSanitizer,
asan
(el valor predeterminado es no).Nuevo en la versión 3.6.
- --with-memory-sanitizer¶
Habilita el detector de errores de asignación MemorySanitizer,
msan
(el valor predeterminado es no).Nuevo en la versión 3.6.
- --with-undefined-behavior-sanitizer¶
Habilita el detector de comportamiento indefinido UndefinedBehaviorSanitizer,
ubsan
(el valor predeterminado es no).Nuevo en la versión 3.6.
3.2.7. Opciones del enlazador¶
Habilita la compilación de una biblioteca compartida de Python :
libpython
(el valor predeterminado es no).
- --without-static-libpython¶
No compila
libpythonMAJOR.MINOR.a
y no instalapython.o
(compilado y habilitado de forma predeterminada).Nuevo en la versión 3.10.
3.2.8. Opciones de bibliotecas¶
- --with-libs='lib1 ...'¶
Enlace con bibliotecas adicionales (el valor predeterminado es no).
- --with-system-expat¶
Compila el módulo
pyexpat
usando la biblioteca instaladaexpat
instalada (por defecto es no).
- --with-system-libmpdec¶
Compila el módulo de extensión
_decimal
usando la biblioteca instaladampdec
, ver el módulodecimal
(el valor predeterminado es no).Nuevo en la versión 3.3.
- --with-readline=editline¶
Utilice la biblioteca
editline
para el backend del móduloreadline
.Define la macro
WITH_EDITLINE
.Nuevo en la versión 3.10.
- --without-readline¶
No cree el módulo
readline
(es construido por defecto).No defina la macro
HAVE_LIBREADLINE
.Nuevo en la versión 3.10.
- --with-libm=STRING¶
Sobreescribe la biblioteca matemática
libm
a STRING (el valor predeterminado es dependiente del sistema).
- --with-libc=STRING¶
Sobreescribe la biblioteca C
libc
a STRING (el valor predeterminado es dependiente del sistema).
- --with-openssl=DIR¶
Raíz del directorio OpenSSL.
Nuevo en la versión 3.7.
- --with-openssl-rpath=[no|auto|DIR]¶
Configura el directorio de la biblioteca en tiempo de ejecución (rpath) para las bibliotecas OpenSSL:
no
(por defecto): no establece rpath;auto
: autodetecta rpath desde--with-openssl
ypkg-config
;DIR: establece un rpath explícito.
Nuevo en la versión 3.10.
3.2.9. Opciones de seguridad¶
- --with-hash-algorithm=[fnv|siphash13|siphash24]¶
Selecciona el algoritmo hash para usar en
Python/pyhash.c
:siphash13
(por defecto);siphash24
;fnv
.
Nuevo en la versión 3.4.
Nuevo en la versión 3.11: Se agrega
siphash13
y es el nuevo valor predeterminado.
- --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2¶
Módulos hash incorporados:
md5
;sha1
;sha256
;sha512
;sha3
(con shake);blake2
.
Nuevo en la versión 3.9.
- --with-ssl-default-suites=[python|openssl|STRING]¶
Sobreescribe la cadena de conjuntos de cifrado predeterminada de OpenSSL:
python
(por defecto): usa la selección principal de Python;openssl
: deja intactos los valores predeterminados de OpenSSL;STRING: usa una cadena de caracteres personalizada
Consultar el módulo
ssl
.Nuevo en la versión 3.7.
Distinto en la versión 3.10: Las configuraciones
python
y STRING también establecen TLS 1.2 como versión mínima del protocolo.
3.2.10. Opciones macOS¶
Ver Mac/README.rst
.
- --enable-universalsdk¶
- --enable-universalsdk=SDKDIR¶
Crea una compilación binaria universal. SDKDIR especifica qué macOS SDK debe usarse para realizar la compilación (el valor predeterminado es no).
- --enable-framework¶
- --enable-framework=INSTALLDIR¶
Crear un Python.framework en lugar de una instalación Unix tradicional. Opcionalmente INSTALLDIR especifica la ruta de instalación (el valor predeterminado es no).
- --with-universal-archs=ARCH¶
Especifique el tipo de binario universal que se debe crear. Esta opción solo es válida cuando se establece
--enable-universalsdk
.Opciones:
universal2
;32-bit
;64-bit
;3-way
;intel
;intel-32
;intel-64
;all
.
- --with-framework-name=FRAMEWORK¶
Especifica el nombre del framework de Python en macOS, solo es válido cuando
--enable-framework
está configurada (por defecto:Python
).
3.2.11. Opciones de compilación cruzada¶
La compilación cruzada, también conocida como construcción cruzada, se puede usar para construir Python para otra plataforma o arquitectura de CPU. La compilación cruzada requiere un intérprete de Python para la plataforma de compilación. La versión de Python de compilación debe coincidir con la versión de Python host de compilación cruzada.
- --build=BUILD¶
configure para construir en BUILD, generalmente adivinado por config.guess.
- --host=HOST¶
compilación cruzada para crear programas que se ejecuten en HOST (plataforma de destino)
- --with-build-python=path/to/python¶
ruta para construir el binario
python
para compilación cruzadaNuevo en la versión 3.11.
- CONFIG_SITE=file¶
Una variable de entorno que apunta a un archivo con anulaciones de configuración.
Ejemplo de archivo config.site:
# config.site-aarch64 ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no
Ejemplo de compilación cruzada:
CONFIG_SITE=config.site-aarch64 ../configure \
--build=x86_64-pc-linux-gnu \
--host=aarch64-unknown-linux-gnu \
--with-build-python=../x86_64/python
3.3. Sistema de compilación Python¶
3.3.1. Archivos principales del sistema de compilación¶
configure.ac
=>configure
;Makefile.pre.in
=>Makefile
(creado porconfigure
);pyconfig.h
(creado porconfigure
);Modules/Setup
: Extensiones C creadas por Makefile usando el script de shellModule/makesetup
;setup.py
: C extensions built using thesetuptools
package.
3.3.2. Pasos principales de compilación¶
Los archivos C (
.c
) se crean como archivos objeto (.o
).La biblioteca estática
libpython
(.a
) se crea a a partir de archivos de objetos.python.o
y la biblioteca estáticalibpython
están enlazadas al programa finalpython
.Las extensiones C son creadas por Makefile (ver
Midules/Setup
) ypython setup.py build
.
3.3.3. Objetivos principales de Makefile¶
make
: Compilar Python con la biblioteca estándar.make platform:
: compila el programapython
, pero no construye los módulos de extensión de la biblioteca estándar.make profile-opt
: compila Python utilizando la optimización guiada por perfiles (PGO). Puede usar la opción de configuración--enable-optimizations
para hacer que este sea el objetivo predeterminado del comandomake
(make all
o simplementemake
).make buildbottest
: compila Python y ejecuta el conjunto de pruebas de Python, de la misma manera que los buildbots prueban Python. Configure la variableTESTTIMEOUT
(en segundos) para cambiar el tiempo de espera de la prueba (1200 por defecto: 20 minutos).make install
: Compila e instala Python.make regen-all
: regenera (casi) todos los archivos generados;make regen-stdlib-module-names
yautoconf
deben ejecutarse por separado para los archivos generados restantes.make clean
: elimina los archivos compilados.make distclean
: Similar amake clean
, pero elimina también los archivos creados por el script de configuración.
3.3.4. Extensiones C¶
Algunas extensiones de C están construidas como módulos incorporadas, como el módulo sys
. Están compiladas con la macro definida Py_BUILD_CORE_BUILTIN
. Los módulos incorporados no tienen el atributo __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__'
Otras extensiones de C se crean como bibliotecas dinámicas, como el módulo _asyncio
. Están construidas con la macro Py_BUILD_CORE_MODULE
definida. Ejemplo en 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
se usa para generar objetivos Makefile para compilar extensiones C. Al principio de los archivos, las extensiones C se crean como módulos incorporados. Las extensiones definidas después del marcador *shared*
se crean como bibliotecas dinámicas.
El script setup.py
solo crea extensiones C como bibliotecas compartidas usando el módulo distutils
.
Las macros PyAPI_FUNC()
, PyAPI_API()
y PyMODINIT_FUNC()
de Include/pyport.h
se definen de manera diferente dependiendo si es definida la macro Py_BUILD_CORE_MODULE
:
Use
Py_EXPORTED_SYMBOL
siPy_BUILD_CORE_MODULE
es definidoUse
Py_IMPORTED_SYMBOL
de lo contrario.
Si la macro Py_BUILD_CORE_BUILTIN
se usa por error en una extensión de C compilada como una biblioteca compartida, su función PyInit_xxx()
no se exporta, provocando un ImportError
en la importación.
3.4. Banderas de compilador y vinculación¶
Opciones establecidas por el script ./configure
y las variables de entorno y utilizadas por Makefile
.
3.4.1. Banderas del preprocesador¶
- CONFIGURE_CPPFLAGS¶
Valor de la variable
CPPFLAGS
pasado al script./configure
.Nuevo en la versión 3.6.
- CPPFLAGS¶
(Objetivo) Indicadores del preprocesador C/C++, p. ej.
-I<include dir>
si tiene encabezados en un directorio no estándar<include dir>
.Ambos
CPPFLAGS
yLDFLAGS
necesitan contener el valor del shell para setup.py para poder compilar módulos de extensión usando los directorios especificados en las variables de entorno.
- BASECPPFLAGS¶
Nuevo en la versión 3.4.
- PY_CPPFLAGS¶
Se agregaron indicadores de preprocesador adicionales para construir los archivos de objeto del intérprete.
Por defecto:
$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)
.Nuevo en la versión 3.2.
3.4.2. Banderas del compilador¶
- CC¶
Comando del compilador C.
Ejemplo:
gcc -pthread
.
- CXX¶
Comando del compilador de C++.
Ejemplo:
g++ -pthread
.
- CFLAGS¶
Banderas del compilador de C.
- CFLAGS_NODIST¶
CFLAGS_NODIST
se usa para compilar el intérprete y las extensiones stdlib C. Úselo cuando una bandera del compilador no sea parte de distutilsCFLAGS
una vez que Python esté instalado (bpo-21121).En particular,
CFLAGS
no debe contener:el indicador del compilador
-I
(para configurar la ruta de búsqueda de archivos de inclusión). Los indicadores-I
se procesan de izquierda a derecha, y cualquier indicador enCFLAGS
tendrá prioridad sobre los indicadores-I
proporcionados por el usuario y el paquete.banderas de endurecimiento como
-Werror
porque las distribuciones no pueden controlar si los paquetes instalados por los usuarios cumplen con estándares tan elevados.
Nuevo en la versión 3.5.
- COMPILEALL_OPTS¶
Options passed to the
compileall
command line when building PYC files inmake install
. Default:-j0
.Nuevo en la versión 3.12.
- EXTRA_CFLAGS¶
Banderas adicionales del compilador de C.
- CONFIGURE_CFLAGS¶
Valor de la variable
CFLAGS
pasada al script./configure
.Nuevo en la versión 3.2.
- CONFIGURE_CFLAGS_NODIST¶
Valor de la variable
CFLAGS_NODIST
pasada al script./configure
.Nuevo en la versión 3.5.
- BASECFLAGS¶
Banderas base del compilador.
- OPT¶
Banderas de optimización.
- CFLAGS_ALIASING¶
Banderas de alias estrictos o no estrictos que se utilizan para compilar
Python/dtoa.c
.Nuevo en la versión 3.7.
- CCSHARED¶
Banderas del compilador que se utilizan para compilar una biblioteca compartida.
Por ejemplo,
-fPIC
se usa en Linux y BSD.
- CFLAGSFORSHARED¶
Se agregaron banderas C adicionales para compilar los archivos de objeto del intérprete.
Por defecto:
$(CCSHARED)
cuando se usa--enable-shared
, o una cadena de caracteres vacía en caso contrario.
- PY_CFLAGS¶
Por defecto:
$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
.
- PY_CFLAGS_NODIST¶
Por defecto:
$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal
.Nuevo en la versión 3.5.
- PY_STDMODULE_CFLAGS¶
Banderas de C que se utilizan para compilar los archivos de objeto del intérprete.
Por defecto:
$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
.Nuevo en la versión 3.7.
- PY_CORE_CFLAGS¶
Por defecto:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
.Nuevo en la versión 3.2.
- PY_BUILTIN_MODULE_CFLAGS¶
Banderas del compilador para construir un módulo de extensión de biblioteca estándar como un módulo incorporado, como el módulo
posix
.Por defecto:
$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
.Nuevo en la versión 3.8.
- PURIFY¶
Comando Purify. Purify es un programa de depuración de memoria.
Por defecto: cadena de caracteres vacía (no utilizado).
3.4.3. Banderas de vinculación¶
- LINKCC¶
Comando de vinculación usado para compilar programas como
python
y_testembed
.Default:
$(PURIFY) $(CC)
.
- CONFIGURE_LDFLAGS¶
Valor de la variable
LDFLAGS
pasada al script./configure
.Evite asignar
CFLAGS
,LDFLAGS
, etc. así los usuarios pueden usarlos en la línea de comando para agregar estos valores sin pisar los valores preestablecidos.Nuevo en la versión 3.2.
- LDFLAGS_NODIST¶
LDFLAGS_NODIST
se usa de la misma manera queCFLAGS_NODIST
. Usar cuando una bandera del enlazador no sea parte de distutilsLDFLAGS
una vez que Python esté instalado (bpo-35257).En particular,
LDFLAGS
no debe contener:el indicador del compilador
-L
(para establecer la ruta de búsqueda de bibliotecas). Los indicadores-L
se procesan de izquierda a derecha, y cualquier indicador enLDFLAGS
tendrá prioridad sobre los indicadores-L
proporcionados por el usuario y el paquete.
- CONFIGURE_LDFLAGS_NODIST¶
Valor de la variable
LDFLAGS_NODIST
pasado al script./configure
.Nuevo en la versión 3.8.
- LDFLAGS¶
Banderas de vinculación, p. ej.
-L<lib dir>
si tiene bibliotecas en un directorio no estándar<lib dir>
.Ambos
CPPFLAGS
yLDFLAGS
necesitan contener el valor del shell para setup.py para poder compilar módulos de extensión usando los directorios especificados en las variables de entorno.
- LIBS¶
Banderas de vinculación para pasar bibliotecas al vinculador al enlazar el ejecutable de Python.
Ejemplo:
-lrt
.
- LDSHARED¶
Comando para construir una biblioteca compartida.
Por defecto:
@LDSHARED@ $(PY_LDFLAGS)
.
- BLDSHARED¶
Comando para compilar la biblioteca compartida
libpython
.Por defecto:
@BLDSHARED@ $(PY_CORE_LDFLAGS)
.
- PY_LDFLAGS¶
Por defecto:
$(CONFIGURE_LDFLAGS) $(LDFLAGS)
.
- PY_LDFLAGS_NODIST¶
Por defecto:
$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)
.Nuevo en la versión 3.8.
- PY_CORE_LDFLAGS¶
Banderas de vinculación que se utilizan para crear los archivos de objeto del intérprete.
Nuevo en la versión 3.8.