create - python compiler
¿Cómo obtener la lista de opciones con las que se compiló Python? (5)
Aquí hay un comando que uso para comparar diferentes configuraciones de Python. Incluye obtener el valor de los resultados:
$ python3.6 -c "import sysconfig;print(''{}''.format(''/n''.join([''{} = {}''.format(v, sysconfig.get_config_var(v)) for v in sorted(sysconfig.get_config_vars(), key=lambda s: s.lower())])))" > /tmp/python36.conf
$ python2.7 -c "import sysconfig;print(''{}''.format(''/n''.join([''{} = {}''.format(v, sysconfig.get_config_var(v)) for v in sorted(sysconfig.get_config_vars(), key=lambda s: s.lower())])))" > /tmp/python27.conf
$ sdiff /tmp/python36.conf /tmp/python27.conf
$ # This is my own version of colorized side-by-side diff from
$ # https://github.com/jlinoff/csdiff
$ csdiff /tmp/python36.conf /tmp/python27.conf
Puedes compilar Python de varias maneras. Me gustaría averiguar con qué opciones se compiló mi Python.
Caso de uso concreto: ¿se compiló mi Python con readline? Sé que puedo ver esto haciendo "read readline", pero me gustaría ver una lista de configuración de compilación para mi binario de Python.
Editar: Me refiero al ejecutable de Python y no al código fuente escrito por mí mismo.
Hay un módulo para ver la configuración del sistema
import sysconfig
print(sysconfig.get_config_vars())
Ofrece una interfaz para obtener también variables individuales.
sysconfig.get_config_var(''HAVE_LIBREADLINE'')
Editar:
antes de python2.7, debes usar
import distutils.sysconfig
print distutils.sysconfig.get_config_vars()
Para construir sobre la respuesta de mirk, para encontrar las banderas de configuración que se usaron realmente durante la compilación, el valor que está buscando es CONFIG_ARGS
.
Por ejemplo, este es el resultado de un Python compilado por Ubuntu:
>>> print distutils.sysconfig.get_config_var(''CONFIG_ARGS'')
''--enable-shared'' ''--prefix=/usr'' ''--enable-ipv6''
''--enable-unicode=ucs4'' ''--with-dbmliborder=bdb:gdbm''
''--with-system-expat'' ''--with-system-ffi'' ''--with-fpe ctl''
''CC=x86_64-linux-gnu-gcc'' ''CFLAGS=-D_FORTIFY_SOURCE=2 -g
-fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security '' ''LDFLAGS=-Wl,-Bs ymbolic-functions
-Wl,-z,relro''
Para obtener la lista de opciones con las que se compiló PyPy , ejecuta
pypy --info
Y otra forma de hacerlo ... Python proporciona scripts por versión instalada ...
ls -l /usr/bin/python*config*
16 Dec 21 2013 /usr/bin/python-config -> python2.7-config
16 Dec 21 2013 /usr/bin/python2-config -> python2.7-config
33 Mar 22 18:57 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
16 Mar 23 03:17 /usr/bin/python3-config -> python3.4-config
33 Apr 11 09:15 /usr/bin/python3.4-config -> x86_64-linux-gnu-python3.4-config
34 Apr 11 09:15 /usr/bin/python3.4m-config -> x86_64-linux-gnu-python3.4m-config
17 Mar 23 03:17 /usr/bin/python3m-config -> python3.4m-config
python3-config --help
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
python3-config --prefix
/usr
Las respuestas de uno de mis sistemas son:
--prefix /usr
--exec-prefix /usr
--includes -I/usr/include/python3.4m -I/usr/include/python3.4m
--libs -lpthread -ldl -lutil -lm -lpython3.4m
--cflags -I/usr/include/python3.4m -I/usr/include/python3.4m -Wno-unused-result -Werror=declaration-after-statement -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
--ldflags -L/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu -L/usr/lib -lpthread -ldl -lutil -lm -lpython3.4m -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
--extension-suffix @SO@
--abiflags m
--configdir /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu
Entonces, si necesita valores de configuración para scripts bash y otros, estos están disponibles con esta utilidad de línea de comandos.