2012-04-17 5 views
42

Puede compilar Python de varias maneras. Me gustaría averiguar con qué opciones se compiló mi Python.¿Cómo obtener la lista de opciones con las que se compiló Python?

Caso de uso concreto: fue mi Python compilado con readline? Sé que puedo ver esto haciendo "importar leer", 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 código fuente escrito por mí mismo.

+0

Por lo general no trabaja con código de bytes compilado pitón - normalmente se trabaja con archivos de origen pitón. Esto realmente no tiene demasiado sentido, ¿podría darnos un poco más de contexto? –

+1

Lattyware: Creo que el OP significaba cómo se compiló el ejecutable de python, no el bytecode de los módulos – sinelaw

+0

sinelaw es correcto, me refiero al ejecutable de Python, agregado para mayor claridad –

Respuesta

43

Hay un módulo para ver el sistema de configuración

import sysconfig 
print(sysconfig.get_config_vars()) 

Ofrece una interfaz para obtener las variables individuales.

sysconfig.get_config_var('HAVE_LIBREADLINE') 

Editar:

antes python2.7, usted tiene que utilizar

import distutils.sysconfig 
print distutils.sysconfig.get_config_vars() 
+0

Estoy usando python 2.7. Funciona allí también. – mirk

+0

(eliminó accidentalmente mi comentario original) Esto funciona en 3.2 y superior (en python 3) o, aparentemente en 2.7 y superior (en python 2). No parece funcionar en mi 2.6.7 – sinelaw

+0

gracias, he actualizado la respuesta para versiones anteriores de python. – mirk

21

Para construir sobre la respuesta de la penumbra, para encontrar las banderas de configure que realmente se utilizaron durante la construcción, el valor que está buscando es CONFIG_ARGS.

Por ejemplo, esta es la salida de un pitón compilado en 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' 
8

Y otra manera de hacerlo ... Python suministra por guiones 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 @[email protected] 
--abiflags   m 
--configdir  /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu 

Si necesita valores de configuración para bash scr ipts y tal, estos están disponibles con esta utilidad de línea de comandos.

-2

para obtener la lista de opciones que PyPy fue compilado, ejecute

pypy --info 
+0

Esa no era mi pregunta. –

Cuestiones relacionadas