create compiler compile python compilation packages

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.