"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*: esquema para plataformas POSIX como Linux o macOS.
  Este es el esquema predeterminado que se usa cuando se instala
  Python o un componente.

* *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_default_scheme()

   Retorna el nombre del esquema predeterminado para la plataforma
   actual.

   Nuevo en la versión 3.10: Esta función se llamaba anteriormente
   "_get_default_scheme()" y se consideraba un detalle de
   implementación.

sysconfig.get_preferred_scheme(key)

   Retorna un nombre de esquema preferido para un diseño de
   instalación especificado por *key*.

   *key* debe ser ""prefix"", ""home"" o ""user"".

   El valor de retorno es un nombre de esquema que aparece en
   "get_scheme_names()". Se puede pasar a funciones "sysconfig" que
   toman un argumento *scheme*, como "get_paths()".

   Nuevo en la versión 3.10.

sysconfig._get_preferred_schemes()

   Retorna un diccionario que contiene los nombres de los esquemas
   preferidos en la plataforma actual. Los implementadores y
   redistribuidores de Python pueden agregar sus esquemas preferidos
   al valor global de nivel de módulo "_INSTALL_SCHEMES" y modificar
   esta función para devolver esos nombres de esquema, p. Ej.
   proporcionan diferentes esquemas para que los utilicen los
   administradores de paquetes de idioma y sistema, de modo que los
   paquetes instalados por uno no se mezclen con los del otro.

   Los usuarios finales no deben utilizar esta función, sino
   "get_default_scheme()" y "get_preferred_scheme()" en su lugar.

   Nuevo en la versión 3.10.

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 por
   "get_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.

   Si no se encuentra *name*, lanza un "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á un
   "KeyError".


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 puede retornar:

   * 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
   ejecutando "make 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()".
