sysconfig
— Proporciona acceso a la información de configuración de Python¶
Nuevo en la versión 3.2.
Código fuente: Lib/sysconfig.py
El módulo sysconfig
proporcionado acceso a la información de configuración de Python, como la lista de rutas de instalación y las variables de configuración relevantes para la plataforma actual.
Variables de configuración¶
Una distribución de Python contiene un Makefile
y un archivo de cabecera pyconfig.h
que son necesarios para construir tanto el propio binario de Python como las extensiones C de terceros compiladas usando distutils
.
sysconfig
coloca todas las variables que se encuentran en estos archivos un diccionario al que se puede acceder usando get_config_vars()
o get_config_var()
.
Tenga en cuenta que en Windows, es un conjunto mucho más pequeño.
-
sysconfig.
get_config_vars
(*args)¶ Sin argumentos, retorna un diccionario de todas las variables de configuración relevantes para la plataforma actual.
Con argumentos, retorna un lista de valores que resultan de buscar cada argumento en el diccionario de variables de configuración.
Por cada argumento, si no se encuentra el valor, retorna
None
.
-
sysconfig.
get_config_var
(name)¶ Retorna el valor de un solo nombre de variable (name). Equivalente a
get_config_vars().get(name)
.Si no se encuentra name, retorna
None
.
Ejemplos de uso:
>>> import sysconfig
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
Rutas de instalación¶
Python usa un esquema de instalación que difiere según la plataforma y en las opciones de instalación. Estos esquemas son almacenados en sysconfig
con identificadores únicos basados en el valor retornado por os.name
.
Cada nuevo componente que se instala usando distutils
o un sistema basado en Distutils seguirá el mismo esquema para copiar su archivo en los lugares correctos.
Python currently supports six schemes:
posix_prefix: scheme for POSIX platforms like Linux or macOS. This is the default scheme used when Python or a component is installed.
posix_home: esquema para plataformas POSIX usado cuando se usa una opción home en la instalación. Este esquema se usa cuando se instala un componente a través de Disutils con un prefijo de inicio específico.
posix_user: esquema para plataformas POSIX usado cuando se instala un componente a través de Distutils y se usa la opción user. Este esquema define rutas ubicadas bajo el directorio de inicio del usuario.
nt: esquema para plataformas NT como Windows.
nt_user: esquema para plataformas NT, cuando se usa la opción user.
osx_framework_user: scheme for macOS, when the user option is used.
Cada esquema está compuesto por una serie de rutas y cada ruta tiene un identificador único. Python actualmente usa ocho rutas:
stdlib: directorio que contiene los archivos de la biblioteca estándar de Python que no son específicos de la plataforma.
platstdlib: directorio que contiene los archivos de la biblioteca estándar de Python que son específicos de la plataforma.
platlib: directorio para archivos específicos del sitio, específicos de la plataforma.
purelib: directorio para archivos específicos del sitio, no específicos de la plataforma.
include: directorio para archivos de encabezado no específicos de plataforma.
platinclude: directorio para archivos de encabezado específicos de la plataforma.
scripts: directorio para archivos de script.
data: directorio para archivos de datos.
sysconfig
proporciona algunas funciones para determinar estas rutas.
-
sysconfig.
get_scheme_names
()¶ Retorna una tupla que contiene todos los esquemas admitidos actualmente en
sysconfig
.
-
sysconfig.
get_path_names
()¶ Retorna una tupla que contiene todo los nombres de rutas admitidos actualmente en
sysconfig
.
-
sysconfig.
get_path
(name[, scheme[, vars[, expand]]])¶ Retorna una ruta de instalación correspondiente a la ruta name, del esquema de instalación denominado scheme.
name tiene que ser un valor de la lista retornado por
get_path_names()
.sysconfig
almacena las rutas de instalación correspondientes a cada nombre de ruta, para cada plataforma, con variables que se expandirán. Por ejemplo, la ruta stdlib para el esquema nt es:{base}/Lib
.get_path()
utilizará las variables retornadas porget_config_vars()
para expandir la ruta. Todas las variables tienen valores predeterminados para cada plataforma, por lo que se puede llamar a esta función y obtener el valor predeterminado.Si se proporciona el esquema (scheme), debe ser un valor de la lista retornada por
get_scheme_names()
. De lo contrario, se utiliza el esquema predeterminado para la plataforma actual.Si se proporciona vars, debe ser un diccionario de variables que actualizará el retorno del diccionario mediante
get_config_vars()
.Si expand se establece en
False
, la ruta no se expandirá usando las variables.If name is not found, raise a
KeyError
.
-
sysconfig.
get_paths
([scheme[, vars[, expand]]])¶ Retorna un diccionario de contiene todas las rutas de instalación correspondientes a un esquema de instalación. Consulte
get_path()
para obtener más información.Si no se proporciona el esquema (scheme), utilizará el esquema predeterminado para la plataforma actual.
Si se proporciona vars, debe ser un diccionario de variables que actualizará el diccionario utilizado para expandir las rutas.
Si expand se establece en falso, las rutas no se expandirán.
Si scheme no es un esquema existente,
get_paths()
lanzará unKeyError
.
Otras funciones¶
-
sysconfig.
get_python_version
()¶ Retorna el número de versión versión
MAJOR.MINOR
de Python como una cadena. Similar a'%d.%d' % sys.version_info[:2]
.
-
sysconfig.
get_platform
()¶ Retorna una cadena que identifica la plataforma actual.
Se utiliza principalmente para distinguir los directorios de compilación específicos de la plataforma y las distribuciones compiladas específicas de la plataforma. Por lo general se incluye el nombre y la versión del sistema operativo y la arquitectura (como lo proporciona “os.uname()”), aunque la información exacta incluida depende del sistema operativo: por ejemplo, en Linux, la versión del kernel no es particularmente importante.
Ejemplo de valores retornados:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows retornará uno de:
win-amd64 (Windows de 64 bits en AMD64, también conocido como x86_64, Intel64 y EM64T)
win32 (todos los demás - específicamente se retorna sys.platform)
macOS can return:
macosx-10.6-ppc
macosx-10.4-ppc64
macosx-10.3-i386
macosx-10.4-fat
Para otras plataformas que no son POSIX, actualmente solo retorna
sys.platform
.
-
sysconfig.
is_python_build
()¶ Retorna
True
si el intérprete de Python en ejecución se compiló a partir de la fuente y se está ejecutando desde su ubicación compilada, y no desde una ubicación resultante de por ejemplo ejecutandomake install
o instalando a través de un instalador binario.
-
sysconfig.
parse_config_h
(fp[, vars])¶ Analiza un archivo de estilo
config.h
.fp es un objeto similar a un archivo que apunta al archivo similar a
config.h
.Se retorna un diccionario que contiene pares de nombre/valor. Si se pasa un diccionario opcional como un segundo argumento, se utiliza en lugar de un nuevo diccionario y se actualiza con los valores leídos en el archivo.
-
sysconfig.
get_config_h_filename
()¶ Retorna la ruta de
pyconfig.h
.
-
sysconfig.
get_makefile_filename
()¶ Retorna la ruta de
Makefile
.
Usando sysconfig
como un script¶
Puedes usar sysconfig
como un script con la opción -m de Python:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
Esta llamada imprimirá en la salida estándar la información retornada por get_platform()
, get_python_version()
, get_path()
y get_config_vars()
.