9. Referencia de la API

Ver también

Argumentos nuevos y cambiados de setup.py en setuptools

El proyecto setuptools añade nuevas capacidades a la función setup y otras API, hace que la API sea coherente en diferentes versiones de Python y, por lo tanto, se recomienda usar distutils directamente.

Nota

Este documento se conserva únicamente hasta que la documentación de setuptools en https://setuptools.readthedocs.io/en/latest/setuptools.html cubra de forma independiente toda la información relevante que se incluye actualmente aquí.

9.1. distutils.core — Funcionalidad Core Distutils

El módulo distutils.core es el único módulo que necesita ser instalado para utilizar Distutils. Proporciona el setup() (que es llamado desde el script de configuración). Indirectamente proporciona la clase distutils.dist.Distribution y la clase distutils.cmd.Command.

distutils.core.setup(arguments)

La función básica do-everything hace casi todo lo que podrías pedir de un método Distutils.

La función de configuración toma un gran número de argumentos. Estos se presentan en la siguiente tabla.

nombre del argumento

valor

tipo

name

El nombre del paquete

un string

version

El número de versión del paquete; ver distutils.version

un string

description

Una sola línea describiendo el paquete

un string

long_description

Descripción larga del paquete

un string

author

El nombre del autor del paquete

un string

author_email

La dirección de correo electrónico del autor del paquete

un string

maintainer

El nombre del mantenedor actual, si es diferente del autor. Ten en cuenta que si se proporciona el mantenedor, distuils lo usará como el autor en PKG-INFO

un string

maintainer_email

La dirección de correo electrónico del mantenedor actual, si es diferente del autor

un string

url

Una URL para el paquete (página principal)

un string

download_url

Una URL para descargar el paquete

un string

packages

Una lista de paquetes Python que distutils podrá manipular

una lista de strings

py_modules

Una lista de módulos Python que distutils podrá manipular

una lista de strings

scripts

Una lista de archivos únicos de scripts que serán creados e instalados

una lista de strings

ext_modules

Una lista de extensiones Python para ser creadas

una lista de las instancias de la clase distutils.core.Extension

classifiers

Una lista de categorías para el paquete

una lista de strings; los clasificadores válidos están listados en PyPI.

distclass

la clase para usar la clase Distribution

una sub-clase de la clase distutils.core.Distribution

script_name

El nombre del script del setup.py - el predeterminado es sys.argv[0]

un string

script_args

Argumentos para suministrar el script de configuración

una lista de strings

options

opciones por defecto para el script de configuración

un diccionario

license

La licencia para el paquete

un string

keywords

Metadatos descriptivos, ver PEP 314

una lista de strings o un string separado por comas

platforms

una lista de strings o un string separado por comas

cmdclass

Una asignación de los nombres de los comandos a las sub-clases de la clase Command

un diccionario

data_files

Una lista de archivos de datos para instalar

una lista

package_dir

Una asignación de directorios a los nombres de los paquetes

un diccionario

distutils.core.run_setup(script_name[, script_args=None, stop_after='run'])

Ejecuta un script de instalación en un entorno algo controlado y retorna la instancia de la clase distutils.dist.Distribution que maneja las cosas. Esto es útil si se necesitan encontrar los metadatos de distribución (pasados como palabra clave args desde un script a la función setup()), o el contenido de los archivos de configuración o la línea de comandos.

script_name o nombre del script es un archivo que será leído y ejecutado con la función exec(). sys.argv[0] será reemplazado con un script durante la duración de la llamada. script_args es una lista de strings; si se proporciona, sys.argv[1:] será reemplazado por script_args durante la duración de la llamada.

stop_after le dice a la función setup() cuando parar el procesamiento; los valores posibles son:

valor

descripción

init

Detiene después de que la instancia de la clase Distribution haya sido creada y llenada con los argumentos de la palabra clave para la función setup()

config

Detiene después que los archivos de configuración hayan sido analizados (y sus datos almacenados en la instancia de la clase Distribution)

commandline

Detiene después de que la línea de comandos (sys.argv[1:] o script_args) se haya analizado (y los datos almacenados en la instancia de la clase Distribution.)

run

Detiene después de que todos los comandos hayan sido ejecutados (lo mismo que si la función setup() haya sido llamada de forma habitual). Este es el valor predeterminado.

Además, el módulo distutils.core expuso una serie de clases que residen en otros lugares.

A continuación una breve descripción de cada uno de estos, pero para una referencia completa consulta el módulo correspondiente.

class distutils.core.Extension

La clase Extension describe un solo módulo de extensión C o C++ en un script de configuración. Acepta los siguientes argumentos de palabras clave de su constructor:

nombre del argumento

valor

tipo

name

el nombre completo de la extensión, incluidos los paquetes — es decir, no un nombre de archivo o ruta, sino un nombre punteado Python

un string

sources

lista de nombres de archivos de origen, en relación con la raíz de distribución (donde reside el script de configuración), en forma Unix (separados por barras) para su portabilidad. Los archivos fuente pueden ser C, C ++, SWIG (.i), archivos de recursos específicos de la plataforma o cualquier otra cosa que el comando build_ext reconozca como fuente para una extensión de Python.

una lista de strings

include_dirs

lista de los directorios para buscar archivos de encabezados de C/C++ (en forma de Unix para portabilidad)

una lista de strings

define_macros

lista de macros para definir; cada macro se define usando una tupla de 2 (*name*, *value*), donde value es el string para definirla o None para definirla sin un valor particular (equivalente a #define FOO en la fuente o -DFOO en la línea de comandos de un compilador de Unix C)

una lista de tuplas

undef_macros

lista de macros para indefinir explícitamente

una lista de strings

library_dirs

lista de directorios para buscar bibliotecas C/C++ en el momento del enlace

una lista de strings

libraries

lista de nombres de bibliotecas para vincular (no nombres de archivos o rutas)

una lista de strings

runtime_library_dirs

lista de directorios para buscar bibliotecas C/C++ en tiempo de ejecución (para extensiones compartidas, esto es cuando se carga una extensión)

una lista de strings

extra_objects

lista de archivos adicionales para vincular (por ejemplo, archivos de objeto no implícitos en *sources*, una biblioteca estática que debe especificarse explicitamente, archivos de recursos binarios, etc.)

una lista de strings

extra_compile_args

cualquier adicional específico de la plataforma y del compilador para usar cuando compila los archivos fuente en *sources*. Para plataformas y compiladores donde una línea de comando tiene sentido, esta es típicamente una lista de argumentos de línea de comando pero para otras plataformas podría ser cualquier cosa.

una lista de strings

extra_link_args

cualquier adicional específico de la plataforma y del compilador para usar al vincular archivos del tipo objeto para crear la extensión (o para crear un nuevo intérprete de Python estático). Interpretación similar a la de *extra_compile_args*.

una lista de strings

export_symbols

lista de símbolos que se exportarán desde una extensión compartida. No se usa en todas las plataformas y, en general, no es necesario para las extensiones de Python, que normalmente exportan exactamente un símbolo: init + extension_name.

una lista de strings

depends

lista de archivos de los que depende la extensión

una lista de strings

language

lenguaje de extensión (es decir, 'c', 'c++', 'objc'). Se detectará en las extensiones de origen si no se proporcionan.

un string

optional

especifica que una falla de compilación en la extensión no debe abortar el proceso de compilación, sino simplemente omitir la extensión.

un booleano

Distinto en la versión 3.8: En Unix, las extensiones C ya no están vinculadas a libpython excepto en Android y Cygwin.

class distutils.core.Distribution

Una clase Distribution describe cómo construir, instalar y empaquetar un paquete de software Python.

Consulta la función setup() para obtener una lista de argumentos de palabras clave aceptados por el constructor de distribución. La función setup() crea una instancia de distribución.

Distinto en la versión 3.7: La clase Distribution ahora advierte si los campos *classifiers*, *keywords* y *platforms* no se especifican como una lista o un string.

class distutils.core.Command

Una clase Command (o más bien, una instancia de una de sus subclases) implementa un solo comando distutils.

9.2. distutils.ccompiler — Clase base CCompiler

Este módulo proporciona la clase base abstracta para las clases CCompiler. Una instancia de la clase CCompiler se puede usar para todos los pasos de compilación y enlace necesarios para construir un solo proyecto. Se proporcionan métodos para establecer opciones para el compilador — definiciones de macros, que incluyen directorios, ruta de enlace, bibliotecas y similares.

Este módulo proporciona las siguientes funciones.

distutils.ccompiler.gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries)

Genera opciones de vinculador para buscar directorios de bibliotecas y vincular con bibliotecas específicas. libraries y * library_dirs* son, respectivamente, listas de nombres de bibliotecas (no nombres de archivos!) y directorios de búsqueda. Retorna una lista de opciones de línea de comandos adecuadas para su uso con algún compilador (dependiendo de los dos strings de formato suministrados).

distutils.ccompiler.gen_preprocess_options(macros, include_dirs)

Genera opciones de preprocesador de C (-D, -U, -I) tal como lo utilizan al menos dos tipos de compiladores: el compilador típico de Unix y el Visual C++. macros es lo habitual, una lista de 1 o 2 tuplas, donde (*name*,) significa indefinir (-U) macro name, y (*name*, *value*) significa definir (-D) macro de name a value. include_dirs es solo una lista de nombres de directorio que se agregarán a la ruta de búsqueda del archivo de encabezado (-I). Retorna una lista de opciones de línea de comandos adecuadas para compiladores de Unix o Visual C++.

distutils.ccompiler.get_default_compiler(osname, platform)

Determina el compilador predeterminado que se utilizará para la plataforma dada.

osname debe ser uno de los nombres estándar de Python OS (es decir, los retornados por os.name) y platform el valor común retornado por sys.platform para la plataforma en cuestión.

Los valores predeterminados son os.name y sys.platform en caso de que no se proporcionen los parámetros.

distutils.ccompiler.new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0)

Función de fábrica para generar una instancia de alguna subclase CCompiler para la combinación de plataforma/compilador proporcionada. plat por defecto es os.name (por ejemplo, 'posix', 'nt'), y compiler por defecto es el compilador por defecto para esa plataforma. Actualmente solo se admiten 'posix' y 'nt', y los compiladores predeterminados son la «interfaz Unix tradicional» (clase UnixCCompiler) y Visual C++ (clase MSVCCompiler). Tenga en cuenta que es perfectamente posible solicitar un objeto de compilador de Unix en Windows y un objeto de compilador de Microsoft en Unix — si proporciona un valor para compiler, plat es ignorado.

distutils.ccompiler.show_compilers()

Imprime la lista de compiladores disponibles (usado por las opciones - help-compiler para build, :command: build_ext, build_clib).

class distutils.ccompiler.CCompiler([verbose=0, dry_run=0, force=0])

La clase base abstracta CCompiler define la interfaz que deben implementar las clases de compiladores reales. La clase también tiene algunos métodos de utilidad utilizados por varias clases de compiladores.

La idea básica detrás de una clase de abstracción de compilador es que cada instancia se puede usar para todos los pasos de compilación/enlace en la construcción de un solo proyecto. Por lo tanto, los atributos comunes a todos esos pasos de compilación y enlace — incluyen directorios, macros para definir, bibliotecas para enlazar, etc. — son atributos de la instancia del compilador. Para permitir la variabilidad en la forma en que se tratan los archivos individuales, la mayoría de esos atributos se pueden variar por compilación o por enlace.

El constructor de cada subclase crea una instancia del objeto Compiler. Los indicadores son verbose (muestra un resultado detallado), dry_run (en realidad no ejecuta los pasos) y force (reconstruye todo, independientemente de las dependencias). Todos estos indicadores están predeterminados en 0 (desactivado). Ten en cuenta que probablemente no desees crear una instancia de CCompiler o una de sus subclases directamente; usa la función de fábrica distutils.CCompiler.new_compiler() en su lugar.

Los siguientes métodos te permiten modificar manualmente las opciones del compilador para la instancia de la clase Compiler.

add_include_dir(dir)

Agrega dir a la lista de directorios en los que se buscarán archivos de encabezado. Se le indica al compilador que busque directorios en el orden en que son proporcionados por llamadas sucesivas a add_include_dir().

set_include_dirs(dirs)

Establece la lista de directorios que se buscarán en dirs (una lista de strings). Anula cualquier llamada anterior a add_include_dir(); llamadas posteriores a add_include_dir() agrega a la lista pasada a set_include_dirs(). Esto no afecta a ninguna lista de directorios de inclusión estándar que el compilador pueda buscar de forma predeterminada.

add_library(libname)

Agrega libname a la lista de bibliotecas que se incluirán en todos los enlaces manejados por este compilador de objeto. Ten en cuenta que libname debería no ser el nombre de un archivo que contenga una biblioteca, sino el nombre de la biblioteca en sí: el enlazador, el compilador o la clase del compilador deducirán el nombre del archivo actual (según el plataforma).

Se le indicará al enlazador que se vincule con las bibliotecas en el orden en que se proporcionaron add_library() y/o set_libraries(). Es perfectamente válido duplicar nombres de bibliotecas; se le indicará al enlazador que se vincule con las bibliotecas tantas veces como se mencionen.

set_libraries(libnames)

Establece la lista de bibliotecas que se incluirán en todos los enlaces manejados por este compilador de objeto en libnames (una lista de strings). Esto no afecta a las bibliotecas del sistema estándar que el vinculador pueda incluir de forma predeterminada.

add_library_dir(dir)

Agrega dir a la lista de directorios en los que se buscarán las bibliotecas especificadas para add_library() y set_libraries(). Se le indicará al enlazador que busque bibliotecas en el orden en que se suministran a add_library_dir() y/o set_library_dirs().

set_library_dirs(dirs)

Establece la lista de directorios de búsqueda de bibliotecas en dirs (una lista de strings). Esto no afecta a ninguna ruta de búsqueda de biblioteca estándar que el enlazador pueda buscar de forma predeterminada.

add_runtime_library_dir(dir)

Agrega dir a la lista de directorios en los que se buscarán bibliotecas compartidas en tiempo de ejecución.

set_runtime_library_dirs(dirs)

Establece la lista de directorios para buscar bibliotecas compartidas en tiempo de ejecución en dirs (una lista de strings). Esto no afecta a ninguna ruta de búsqueda estándar que el enlazador en tiempo de ejecución pueda buscar de forma predeterminada.

define_macro(name[, value=None])

Define una macro de preprocesador para todas las compilaciones impulsadas por este objeto compilador. El parámetro opcional value debe ser un string; si no se proporciona, la macro se definirá sin un valor explícito y el resultado exacto depende del compilador utilizado.

undefine_macro(name)

Anula la definición de una macro de preprocesador para todas las compilaciones impulsadas por este compilador de objeto. Si la misma macro está definida por define_macro() y la indefinida por undefine_macro(), la última llamada tiene prioridad (incluidas varias redefiniciones o indefiniciones). Si la macro está redefinida/indefinida por compilación (es decir, en la llamada a compile()), entonces eso tiene prioridad.

Agrega object a la lista de archivos de objeto (o análogos, como archivos de biblioteca nombrados explícitamente o la salida de «resource compilers» o compiladores de recursos) para que se incluyan en cada enlace impulsado por este objeto de compilador.

Establece la lista de archivos de objetos (o análogos) que se incluirán en cada enlace a objects. Esto no afecta a ningún archivo de objeto estándar que el enlazador pueda incluir de forma predeterminada (como las bibliotecas del sistema).

Los siguientes métodos implementan métodos para la detección automática de opciones del compilador, proporcionando alguna funcionalidad similar a GNU :program: autoconf.

detect_language(sources)

Detecta el idioma de un archivo determinado o una lista de archivos. Utiliza los atributos de instancia language_map (un diccionario) y language_order (una lista) para hacer el trabajo.

find_library_file(dirs, lib[, debug=0])

Busca en la lista especificada de directorios un archivo de biblioteca estático o compartido y retorna la ruta completa a ese archive lib. Si debug es verdadero, busca una versión de depuración (si tiene sentido en la plataforma actual). Retorna None si lib no se encontró en ninguno de los directorios especificados.

has_function(funcname[, includes=None, include_dirs=None, libraries=None, library_dirs=None])

Retorna un valor booleano que indica si funcname es compatible con la plataforma actual. Los argumentos opcionales se pueden utilizar para aumentar el entorno de compilación proporcionando archivos y rutas de inclusión adicionales y bibliotecas y rutas.

library_dir_option(dir)

Retorna la opción del compilador para agregar dir a la lista de directorios buscados por bibliotecas.

library_option(lib)

Retorna la opción del compilador para agregar lib a la lista de bibliotecas vinculadas a la biblioteca compartida o ejecutable.

runtime_library_dir_option(dir)

Retorna la opción del compilador para agregar dir a la lista de directorios buscados por bibliotecas en tiempo de ejecución.

set_executables(**args)

Define los ejecutables (y las opciones para ellos) que se ejecutarán para realizar las distintas etapas de compilación. El conjunto exacto de ejecutables que se pueden especificar aquí depende de la clase del compilador (a través del atributo de clase “executables”), pero la mayoría tendrá:

atributo

descripción

compiler

el compilador C/C++

linker_so

enlazador utilizado para crear bibliotecas y objetos compartidos

linker_exe

enlazador utilizado para crear ejecutables binarios

archiver

creador de biblioteca estática

En plataformas con una línea de comandos (Unix, DOS/Windows), cada uno de estos es un string que se dividirá en un nombre ejecutable y una lista de argumentos (opcional). (La división de la cadena se realiza de manera similar a como funcionan los shells de Unix: las palabras están delimitadas por espacios, pero las comillas y las barras invertidas pueden anular esto. Ver distutils.util.split_quoted().)

Los siguientes métodos invocan etapas en el proceso de construcción.

compile(sources[, output_dir=None, macros=None, include_dirs=None, debug=0, extra_preargs=None, extra_postargs=None, depends=None])

Compila uno o más archivos fuente. Genera archivos de objeto (por ejemplo, transforma un archivo .c en un archivo .o).

sources debe ser una lista de nombres de archivo, probablemente archivos C/C ++, pero en realidad cualquier cosa que pueda ser manejada por un compilador particular y un compilador de clase (por ejemplo MSVCCompiler puede manejar archivos de recursos en source). Retorna una lista de nombres de archivos de objetos, uno por nombre de archivo fuente en sources. Dependiendo de la implementación, no se compilarán necesariamente todos los archivos fuente, pero se retornarán todos los nombres de archivo de objeto correspondientes.

Si se indica el output_dir, los objeto de archivos se colocarán debajo de él, conservando su componente de ruta original. Es decir, foo/bar.c normalmente se compila en foo/bar.o (para una implementación de Unix); si output_dir es build, entonces se compilaría en build/foo/bar.o.

macros, si se proporciona, debe ser una lista de definiciones de una macro. Una definición de una macro es un (*name*, *value*) 2-tupla o un (*name*,) 1-tupla. El primero define una macro; si el valor es None, la macro se define sin un valor explícito. El caso de 1 tupla no define una macro. Las definiciones/redefiniciones/indefiniciones posteriores tienen prioridad.

include_dirs, si se proporciona, debe ser una lista de strings, para esta compilación solo se agregarán a la ruta de búsqueda de archivos los directorios de inclusión predeterminada.

debug es un booleano; si es verdadero, se le indicará al compilador que genere símbolos de depuración en (o junto a) los archivos de objetos.

extra_preargs y extra_postargs dependen de la implementación. En plataformas que tienen la noción de línea de comandos (por ejemplo, Unix, DOS/Windows), lo más probable es que sean listas de strings: argumentos de línea de comandos adicionales para anteponer/agregar a la línea de comandos del compilador. En otras plataformas, consulta la documentación de la clase de implementación. En cualquier caso, están pensados como una vía de escape para aquellas ocasiones en las que la marco del compilador abstracto no es suficiente.

depends, si se proporciona, es una lista de nombres de archivos de los que dependen todos los destinos. Si un archivo de origen es más antiguo que cualquier archivo en depends, se volverá a compilar el archivo de origen. Esto admite el seguimiento de dependencias, pero solo con una granularidad aproximada.

Lanza CompileError en caso de falla.

create_static_lib(objects, output_libname[, output_dir=None, debug=0, target_lang=None])

Enlaza un montón de cosas para crear un archivo de biblioteca estático. El «montón de cosas» o «bunch of stuff» consiste en la lista de archivos de objeto suministrados como objects, los archivos de objeto adicionales suministrados a add_link_object() y/o set_link_objects(), las bibliotecas suministradas a add_library() y/o set_libraries(), y las bibliotecas proporcionadas como libraries (si las hay).

output_libname debe ser un nombre de biblioteca, no un nombre de archivo; el nombre del archivo se deducirá del nombre de la biblioteca. output_dir es el directorio donde se colocará el archivo de la biblioteca.

debug es un booleano; si es verdadero, la depuración se incluirá en la biblioteca (ten en cuenta que en la mayoría de las plataformas, es el paso de compilación donde esto es importante: el indicador debug se incluye aquí solo por coherencia).

target_lang es el idioma de destino para el que se compilan los objetos dados. Esto permite un tratamiento específico del tiempo de vinculación de ciertos idiomas.

Lanza LibError en caso de falla.

Enlaza un montón de cosas (o bunch of stuff) juntos para crear un archivo de biblioteca ejecutable o compartido.

El «montón de cosas» o (bunch of stuff) consiste en la lista de archivos de objeto suministrados como objects *. *output_filename debe ser un nombre del archivo. Si se proporciona output_dir, output_filename es relativo a él (es decir, output_filename puede proporcionar componentes de directorio si es necesario).

libraries es una lista de bibliotecas para enlazar. Estos son nombres de bibliotecas, no nombres de archivos, ya que se traducen a nombres de archivos de una manera específica de la plataforma (por ejemplo, foo se convierte en libfoo.a en Unix y foo.lib en DOS/Windows). Sin embargo, pueden incluir un componente de directorio, lo que significa que el enlazador buscará en ese directorio específico en lugar de buscar en todas las ubicaciones normales.

library_dirs, si se proporciona, debe ser una lista de directorios para buscar bibliotecas que se especificaron como nombres de bibliotecas descubiertos (es decir, sin componentes de directorio). Estos están en la parte superior del sistema predeterminado y los suministrados a add_library_dir() y/o set_library_dirs(). runtime_library_dirs es una lista de directorios que se incrustarán en la biblioteca compartida y se usarán para buscar otras bibliotecas compartidas de las que depende en tiempo de ejecución. (Esto solo puede ser relevante en Unix).

export_symbols es una lista de símbolos que exportará la biblioteca compartida. (Esto parece ser relevante solo en Windows).

debug es para métodos como compile() y create_static_lib(), con la ligera distinción de que en realidad es relevante en la mayoría de las plataformas (a diferencia de create_static_lib(), que incluye un indicador debug principalmente por el bien de la forma).

extra_preargs y extra_postargs son para métodos como compile() (excepto, por supuesto, que proporcionan argumentos de línea de comandos para el enlazador particular que se está utilizando).

target_lang es el idioma de destino para el que se compilan los objetos dados. Esto permite un tratamiento específico del tiempo de vinculación de ciertos idiomas.

Lanza LinkError en caso de falla.

Enlaza un ejecutable. output_progname es el nombre del archivo ejecutable, mientras que objects son una lista de nombres de archivos de objetos para vincular. Otros argumentos son para métodos como link().

Enlaza una biblioteca compartida. output_libname es el nombre de la biblioteca de salida, mientras que objects es una lista de nombres de archivos de objetos para vincular. Otros argumentos son para métodos como link().

Enlaza un objeto compartido. output_filename es el nombre del objeto compartido que se creará, mientras que objects es una lista de nombres de archivos de objetos para vincular. Otros argumentos son para métodos como link().

preprocess(source[, output_file=None, macros=None, include_dirs=None, extra_preargs=None, extra_postargs=None])

Preprocesa un solo archivo fuente C/C ++, nombrado en source. La salida se escribirá en el archivo llamado output_file, o stdout si output_file no se proporciona. macros es una lista de definiciones de macros para métodos como compile(), que aumentará el conjunto de macros con define_macro() y undefine_macro(). include_dirs es una lista de nombres de directorio que se agregarán a la lista predeterminada, de la misma manera que add_include_dir().

Lanza PreprocessError en caso de falla.

Los siguientes métodos de utilidad están definidos por la clase CCompiler, para uso de las distintas subclases concretas.

executable_filename(basename[, strip_dir=0, output_dir=''])

Retorna el nombre de archivo del ejecutable para el basename dado. Por lo general, para las plataformas que no son de Windows, este es el mismo que el nombre base, mientras que Windows obtendrá un archivo .exe agregado.

library_filename(libname[, lib_type='static', strip_dir=0, output_dir=''])

Retorna el nombre de archivo para el nombre de biblioteca dado en la plataforma actual. En Unix, una biblioteca con lib_type de 'static' normalmente tendrá la forma liblibname.a, mientras que lib_type de 'dynamic' tendrá la forma liblibname.so.

object_filenames(source_filenames[, strip_dir=0, output_dir=''])

Retorna el nombre de los archivos de objeto para los archivos de origen dados. source_filenames debe ser una lista de nombres de archivo.

shared_object_filename(basename[, strip_dir=0, output_dir=''])

Retorna el nombre de un archivo de objeto compartido para el nombre de archivo basename.

execute(func, args[, msg=None, level=1])

Invoca el método distutils.util.execute(). Este método invoca una función de Python func con los argumentos args dados, después de iniciar sesión y teniendo en cuenta el indicador dry_run.

spawn(cmd)

Invoca distutils.util.spawn(). Esto invoca un proceso externo para ejecutar el comando dado.

mkpath(name[, mode=511])

Invoca distutils.dir_util.mkpath(). Esto crea un directorio y los directorios ancestros que faltan.

move_file(src, dst)

Invoca distutils.file_util.move_file(). Cambia el nombre de src a dst.

announce(msg[, level=1])

Escribe un mensaje usando distutils.log.debug().

warn(msg)

Escribe un mensaje de advertencia msg al error estándar.

debug_print(msg)

Si el indicador debug está configurado en la instancia de la clase CCompiler, imprime msg en la salida estándar; de lo contrario, no hace nada.

9.3. distutils.unixccompiler — Unix CCompiler

Este módulo proporciona la clase UnixCCompiler, una subclase de CCompiler que maneja el típico compilador C de línea de comandos estilo Unix:

  • macros definidas con -Dname[= value]

  • macros definidas con -Uname

  • incluye directorios de búsqueda especificados con -Idir

  • bibliotecas especificadas con -llib

  • directorios de búsqueda de bibliotecas especificados con -Ldir

  • compilación manejada por cc (o similar) ejecutable con -c opción: compilar .c a .o

  • enlaza la biblioteca estática manejada por el comando ar (posiblemente con ranlib)

  • enlaza la biblioteca compartida manejada por cc -shared

9.4. distutils.msvccompiler — Compilador de Microsoft

Este módulo proporciona MSVCCompiler, una implementación de la clase abstracta CCompiler para Microsoft Visual Studio. Por lo general, los módulos de extensión deben compilarse con el mismo compilador Python que se utilizó para compilar. Para Python 2.3 y versiones anteriores, el compilador fue Visual Studio 6. Para Python 2.4 y 2.5, el compilador es Visual Studio .NET 2003.

MSVCCompiler normalmente elegirá el compilador, enlazador, etc. correcto por sí solo. Para anular esta opción, las variables de entorno DISTUTILS_USE_SDK y MSSdk deben estar configuradas. MSSdk indica que el entorno actual ha sido configurado por el script SetEnv.Cmd del SDK, o que las variables de entorno se habían registrado cuando se instaló el SDK; DISTUTILS_USE_SDK indica que el usuario de distutils ha hecho una elección explícita para anular la selección del compilador por MSVCCompiler.

9.5. distutils.bcppcompiler — Compilador Borland

Este módulo proporciona BorlandCCompiler, una subclase de la clase abstracta CCompiler para el compilador Borland C++.

9.6. distutils.cygwincompiler — Compilador Cygwin

Este módulo proporciona la clase CygwinCCompiler, una subclase de UnixCCompiler que maneja el puerto Cygwin del compilador GNU C a Windows. También contiene la clase Mingw32CCompiler que maneja el puerto mingw32 de GCC (igual que cygwin en modo no-cygwin).

9.7. distutils.archive_util — Utilidades de archivo

Este módulo proporciona algunas funciones para crear archivos de almacenamiento, como tarballs o zipfiles.

distutils.archive_util.make_archive(base_name, format[, root_dir=None, base_dir=None, verbose=0, dry_run=0])

Crea un archivo de almacenamiento (por ejemplo, zip o tar). base_name es el nombre del archivo a crear, menos cualquier extensión específica del formato; format es el formato de archivo: como zip, tar, gztar, bztar, xztar o ztar. root_dir es un directorio que será el directorio raíz del archivo; es decir, normalmente chdir en root_dir antes de crear el archivo. base_dir es el directorio desde donde comenzamos a archivar; es decir, base_dir será el prefijo común de todos los archivos y directorios del archivo. root_dir y base_dir ambos predeterminados al directorio actual. Retorna el nombre del archivo de almacenamiento.

Distinto en la versión 3.5: Se agregó soporte para el formato xztar.

distutils.archive_util.make_tarball(base_name, base_dir[, compress='gzip', verbose=0, dry_run=0])

Crea un archivo (opcionalmente comprimido) como un archivo tar de todos los archivos en y bajo base_dir. compress debe ser 'gzip' (el valor predeterminado), 'bzip2', 'xz', 'compress” o None. Para el método 'compress', la utilidad de compresión nombrada por compress debe estar en la ruta de búsqueda del programa predeterminada, por lo que probablemente sea específica de Unix. El archivo tar de salida se llamará base_dir.tar, posiblemente más la extensión de compresión apropiada (.gz,``.bz2``,``.xz`` o .Z). Retorna el nombre del archivo de salida.

Distinto en la versión 3.5: Se agregó soporte para la compresión xz.

distutils.archive_util.make_zipfile(base_name, base_dir[, verbose=0, dry_run=0])

Crea un archivo zip a partir de todos los archivos incluidos en base_dir. El archivo zip de salida se llamará base_name + .zip. Utiliza el módulo Python zipfile (si está disponible) o la utilidad InfoZIP zip (si está instalada y se encuentra en la ruta de búsqueda predeterminada). Si ninguna de las herramientas está disponible, lanza DistutilsExecError. Retorna el nombre del archivo zip de salida.

9.8. distutils.dep_util — Comprobación de dependencias

Este módulo proporciona funciones para realizar una dependencia simple basada en marcas de tiempo de archivos y grupos de archivos; también, funciones basadas completamente en dicho análisis de dependencia de marca de tiempo.

distutils.dep_util.newer(source, target)

Retorna verdadero si source existe y se ha modificado más recientemente que target, o si source existe y target no. Retorna falso si ambos existen y si target tiene el mismo tiempo o es más reciente que source. Lanza DistutilsFileError si source no existe.

distutils.dep_util.newer_pairwise(sources, targets)

Recorre dos listas de nombres de archivos en paralelo, probando si cada fuente es más nueva que su correspondiente destino. Retorna un par de listas (sources, target) donde la fuente es más nueva que el destino, de acuerdo con la semántica de newer().

distutils.dep_util.newer_group(sources, target[, missing='error'])

Retorna verdadero si target no está actualizado con respecto a cualquier archivo listado en sources. En otras palabras, si target existe y es más reciente que todos los archivos en sources, retorna falso; de lo contrario, retorna verdadero. missing controla lo que hacemos cuando falta un archivo fuente; el valor predeterminado ('error') explota con un OSError desde os.stat(); si es 'ignore', eliminamos silenciosamente cualquier archivo fuente faltante; si es 'newer', cualquier archivo fuente que falte nos hace suponer que target está desactualizado (esto es útil en el modo de «dry-run» (o ejecución en seco): que hará que pretenda ejecutar comandos que no funcionaría porque faltan entradas, pero no importa porque en realidad no va a ejecutar los comandos).

9.9. distutils.dir_util — Operaciones del árbol de directorios

Este módulo proporciona funciones para operar en directorios y árboles de directorios.

distutils.dir_util.mkpath(name[, mode=0o777, verbose=0, dry_run=0])

Crea un directorio y cualquier directorio ancestro que falte. Si el directorio ya existe (o si name es el string vacío, significa que el directorio actual, por supuesto existe), no hace nada. Lanza DistutilsFileError si no puede crear algún directorio en el camino (por ejemplo, existe alguna subruta, pero es un archivo en lugar de un directorio). Si verbose es verdadero, imprime un resumen de una línea de cada mkdir en stdout. Retorna la lista de directorios realmente creados.

distutils.dir_util.create_tree(base_dir, files[, mode=0o777, verbose=0, dry_run=0])

Crea todos los directorios vacíos en base_dir necesarios para colocar files allí. base_dir es solo el nombre de un directorio que no existe necesariamente todavía; files es una lista de nombres de archivos que se interpretarán en relación con base_dir. base_dir + la parte del directorio de cada archivo en files se creará si aún no existe. Los indicadores mode, verbose y dry_run son para funciones como mkpath().

distutils.dir_util.copy_tree(src, dst[, preserve_mode=1, preserve_times=1, preserve_symlinks=0, update=0, verbose=0, dry_run=0])

Copia un árbol de directorio completo src en una nueva ubicación dst. Tanto src como dst deben ser nombres de directorio. Si src no es un directorio, lanza DistutilsFileError. Si dst no existe, se crea con mkpath(). El resultado final de la copia es que todos los archivos de src se copian en dst, y los directorios de src se copian de forma recursiva en dst. Retorna la lista de archivos que se copiaron o que podrían haberse copiado, utilizando su nombre de salida. El valor de retorno no se ve afectado por update o dry_run: es simplemente la lista de todos los archivos bajo src *, con los nombres cambiados para estar bajo *dst.

preserve_mode y preserve_times son los mismos que para distutils.file_util.copy_file(); ten en cuenta que solo se aplican a archivos normales, no a directorios. Si preserve_symlinks es verdadero, los enlaces simbólicos se copiarán como enlaces simbólicos (en plataformas que los admitan!); de lo contrario (por defecto), se copiará el destino del enlace simbólico. update y verbose son los mismos que para copy_file().

Los archivos en src que comienzan con .nfs se omiten (hay más sobre estos archivos disponible en la respuesta D2 de la página de preguntas frecuentes de`NFS <http://nfs.sourceforge.net/#section_d>`_ ).

Distinto en la versión 3.3.1: Se ignoran los archivos NFS.

distutils.dir_util.remove_tree(directory[, verbose=0, dry_run=0])

Elimina de forma recursiva directory y todos los archivos y directorios que se encuentran debajo. Cualquier error se ignora (aparte de ser informado a sys.stdout si verbose es verdadero).

9.10. distutils.file_util — Operaciones de un solo archivo

Este módulo contiene algunas funciones de utilidad para operar en archivos individuales.

distutils.file_util.copy_file(src, dst[, preserve_mode=1, preserve_times=1, update=0, link=None, verbose=0, dry_run=0])

Copia el archivo desde src a dst. Si dst es un directorio, entonces src se copia allí con el mismo nombre; de lo contrario, debe ser un nombre de archivo. (Si el archivo existe, será atacado). Si preserve_mode es verdadero (el valor predeterminado), se copia el modo del archivo (bits de tipo y permiso, o lo que sea análogo en la plataforma actual). Si preserve_times es verdadero (el valor predeterminado), también se copian las horas de última modificación y de último acceso. Si update es verdadero, src solo se copiará si dst no existe, o si dst existe pero es anterior a src.

link te permite crear enlaces físicos (usando os.link()) o enlaces simbólicos (usando os.symlink()) en lugar de copiar: configúralo en 'hard' o 'sym'; si es None (el predeterminado), los archivos se copian. No establezcas link en sistemas que no lo admitan: copy_file() pues no comprueba si hay enlaces físicos o simbólicos disponibles. Utiliza _copy_file_contents() para copiar el contenido del archivo.

Retorna una tupla (dest_name, copied): dest_name es el nombre real del archivo de salida, y copied es verdadero si el archivo fue copiado (o se habría copiado, si dry_run es verdadero).

distutils.file_util.move_file(src, dst[, verbose, dry_run])

Mueve el archivo src a dst. Si dst es un directorio, el archivo se moverá a el con el mismo nombre; de lo contrario, src simplemente se renombra a dst. Retorna el nuevo nombre completo del archivo.

Advertencia

Maneja movimientos entre dispositivos en Unix usando copy_file(). ¿Qué pasa con otros sistemas?

distutils.file_util.write_file(filename, contents)

Crea un archivo llamado filename y escribe contents (una secuencia de strings sin terminadores de línea) en el.

9.11. distutils.util — Otras funciones de utilidad varias

Este módulo contiene otras partes y piezas variadas que no encajan en ningún otro módulo de utilidad.

distutils.util.get_platform()

Retorna un string 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, incluye el nombre y la versión del sistema operativo y la arquitectura (como lo proporciona “os.uname ()”), aunque incluir la exacta depende del sistema operativo; por ejemplo, en Linux, la versión del kernel no es particularmente importante.

Ejemplos de valores retornados:

  • linux-i586

  • linux-alpha

  • solaris-2.6-sun4u

Para las plataformas que no son POSIX, actualmente solo retorna sys.platform.

Para los sistemas macOS, la versión del SO refleja la versión mínima en la que se ejecutarán los binarios (es decir, el valor de MACOSX_DEPLOYMENT_TARGET durante la compilación de Python), no la versión del SO del sistema actual.

Para las compilaciones binarias universales en macOS, el valor de la arquitectura refleja el estado binario universal en lugar de la arquitectura del procesador actual. Para los binarios universales de 32 bits, la arquitectura es fat, para los binarios universales de 64 bits la arquitectura es fat64 y para los binarios universales de 4 vías la arquitectura es universal. A partir de Python 2.7 y Python 3.2, la arquitectura fat3 se usa para una compilación universal de 3 vías (ppc, i386, x86_64) e intel se usa para una compilación universal con las arquitecturas i386 y x86_64

Ejemplos de valores retornados en macOS:

  • macosx-10.3-ppc

  • macosx-10.3-fat

  • macosx-10.5-universal

  • macosx-10.6-intel

Para AIX, Python 3.9 y versiones posteriores retornan una cadena que comienza con «aix», seguida de campos adicionales (separados por '-') que representan los valores combinados de Versión de AIX, Release y Nivel de tecnología (primer campo), Fecha de Construcción (segundo campo) y tamaño de bits (tercer campo). Python 3.8 y anteriores retornaban solo un campo adicional con la versión y lanzamiento de AIX.

Ejemplos de valores retornados en AIX:

  • aix-5307-0747-32 # construcción 32-bit en AIX oslevel -s: 5300-07-00-0000

  • aix-7105-1731-64 # construcción 64-bit en AIX oslevel -s: 7100-05-01-1731

  • aix-7.2 # Forma heredada informada en Python 3.8 y versiones anteriores

Distinto en la versión 3.9: El formato de cadena de caracteres de la plataforma AIX ahora también incluye el nivel de tecnología, la fecha de construcción y el tamaño de bits de ABI.

distutils.util.convert_path(pathname)

Retorna “pathname” (o nombre de ruta), como un nombre que funcionará en el sistema de archivos nativo, es decir, divídelo con “/” y vuelve a armarlo usando el separador de directorio actual. Necesario porque los nombres de archivo en el script de configuración siempre se proporcionan en estilo Unix y deben convertirse a la convención local antes de que podamos usarlos en el sistema de archivos. Lanza ValueError en sistemas que no son Unix-ish si pathname comienza o termina con una barra.

distutils.util.change_root(new_root, pathname)

Retorna pathname con new_root precedido. Si pathname es relativo, esto es equivalente a os.path.join (new_root, pathname). De lo contrario, requiere hacer que pathname sea relativo y luego unir los dos, lo cual es complicado en DOS/Windows.

distutils.util.check_environ()

Asegúrate de que “os.environ” tenga todas las variables de entorno garantizamos que los usuarios pueden usar en archivos de configuración, opciones de línea de comandos, etc. Actualmente, esto incluye:

  • HOME - directorio de inicio del usuario (solo Unix)

  • PLAT - descripción de la plataforma actual, incluido el hardware y el sistema operativo (consulta get_platform())

distutils.util.subst_vars(s, local_vars)

Realiza la sustitución de variables de estilo shell/Perl en s. Cada aparición de $ seguido de un nombre se considera una variable, y la variable se sustituye por el valor que se encuentra en el diccionario local_vars, o en os.environ si no está en local_vars. os.environ primero se comprueba/aumenta para garantizar que contiene ciertos valores: ver check_environ(). Lanza ValueError para cualquier variable que no se encuentre en local_vars u os.environ.

Tenga en cuenta que esta no es una función de interpolación de cadenas completa. Un $variable válido solo puede constar de letras mayúsculas y minúsculas, números y un guión bajo. No hay comillas de estilo { } o ( ) disponibles.

distutils.util.split_quoted(s)

Divide un string de acuerdo con las reglas de tipo shell de Unix para comillas y barras invertidas. En resumen: las palabras están delimitadas por espacios, siempre que esos espacios no se escapen con una barra invertida o dentro de un string entre comillas. Las comillas simples y dobles son equivalentes, y los caracteres de las comillas pueden tener un escape de barra invertida. La barra invertida se elimina de cualquier secuencia de escape de dos caracteres, dejando solo el carácter de escape. Los caracteres de comillas se eliminan de cualquier string entre comillas. Retorna una lista de palabras.

distutils.util.execute(func, args[, msg=None, verbose=0, dry_run=0])

Realiza alguna acción que afecta al mundo exterior (por ejemplo, escribir en el sistema de archivos). Tales acciones son especiales porque están deshabilitadas por el indicador dry_run. Este método se encarga de toda esa burocracia por ti; todo lo que tienes que hacer es proporcionar la función a llamar y una tupla de argumentos para esta (para incorporar la «acción externa» que se está realizando), y un mensaje opcional para imprimir.

distutils.util.strtobool(val)

Convierte una representación real de un string a verdadero (1) o falso (0).

Los valores verdaderos son y, yes, t, true, on y 1; los valores falsos son n, no, f, false, off and 0. Lanza ValueError si val es cualquier otra cosa.

distutils.util.byte_compile(py_files[, optimize=0, force=0, prefix=None, base_dir=None, verbose=1, dry_run=0, direct=None])

Byte-compile es una colección de archivos fuente de Python de .pyc en un subdirectorio __pycache__ (ver PEP 3147 y PEP 488). py_files es una lista de archivos para compilar; cualquier archivo que no termine en .py se omite silenciosamente. optimize debe ser uno de los siguientes:

  • 0 - no optimizar

  • 1 - optimización normal (como python -O)

  • 2 - extra optimización (como python -OO)

Si force es verdadero, todos los archivos se vuelven a compilar independientemente de las marcas de tiempo.

El nombre del archivo de origen codificado en cada archivo bytecode tiene por defecto los nombres de archivo listados en py_files; puede modificarlos con prefix y basedir. prefix es un string que se eliminará de cada nombre de archivo de origen, y base_dir es un nombre de directorio que se antepondrá (después de eliminar prefix). Puedes proporcionar uno o ambos (o ninguno) de prefix y * base_dir*, como desees.

Si dry_run es verdadero, actualmente no hace nada que pueda afectar el sistema de archivos.

La compilación de bytes se realiza directamente en este proceso de interpretación con el módulo estándar py_compile, o indirectamente escribiendo un script temporal y ejecutándolo. Normalmente, debería dejar que byte_compile() se dé cuenta de si usar la compilación directa o no (consulta la fuente para obtener más detalles). El indicador direct es utilizado por el script generado en modo indirecto; a menos que sepa lo que está haciendo, se deja configurado en None.

Distinto en la versión 3.2.3: Crea archivos .pyc con una etiqueta mágica import en su nombre, en un subdirectorio __pycache__ en lugar de archivos sin etiqueta en el directorio actual.

Distinto en la versión 3.5: Crea archivos .pyc de acuerdo a PEP 488.

distutils.util.rfc822_escape(header)

Retorna una versión de header para su inclusión en un encabezado RFC 822, asegurándose de que haya 8 espacios después de cada nueva línea. Ten en cuenta que no hace ninguna otra modificación del string.

9.12. distutils.dist — La clase Distribution

Este módulo proporciona la clase Distribution, que representa la distribución del módulo que se está construyendo/instalando/distribuyendo.

9.13. distutils.extension — La clase Extension

Este módulo proporciona la clase Extension, que se utiliza para describir los módulos de extensión C/C ++ en los scripts de configuración.

9.14. distutils.debug — modo de depuración Distutils

Este módulo proporciona el indicador DEBUG.

9.15. distutils.errors — excepciones Distutils

Proporciona excepciones utilizadas por los módulos Distutils. Ten en cuenta que los módulos de Distutils pueden lanzar excepciones estándar; en particular, SystemExit generalmente se lanza por errores que obviamente son culpa del usuario final (por ejemplo, argumentos incorrectos en la línea de comandos).

Este módulo es seguro de usar en el modo from ... import*; solo exporta símbolos cuyos nombres comienzan con Distutils y terminan con Error.

9.16. distutils.fancy_getoptWrapper alrededor del módulo estándar getopt

Este módulo proporciona una envoltura alrededor del modulo estándar getopt que proporciona las siguientes características adicionales:

  • las opciones cortas y largas están unidas

  • las opciones tienen strings de ayuda, por lo que fancy_getopt() podría potencialmente crear un resumen de uso completo

  • las opciones establecen atributos de un objeto pasado

  • las opciones booleanas pueden tener «alias negativos» — p. ej. si -quiet es el «alias negativo» de -verbose, entonces -quiet en la línea de comando establece falso a verbose.

distutils.fancy_getopt.fancy_getopt(options, negative_opt, object, args)

Función Wrapper. options es una lista de (*long_option*, *short_option*, *help_string*) 3-tuplas como se describe en el constructor para FancyGetopt. negative_opt debe ser un diccionario de mapeo de nombres de opciones a nombres de opciones, tanto la clave como el valor deben estar en la lista de options. object es un objeto que se usará para almacenar valores (ver el método getopt() de la clase FancyGetopt). args es la lista de argumentos. Usará sys.argv [1:] si pasa None como args.

distutils.fancy_getopt.wrap_text(text, width)

Envuelve text a menos de width ancho.

class distutils.fancy_getopt.FancyGetopt([option_table=None])

La opción option_table es una lista de 3 tuplas: (long_option, short_option, help_string)

Si una opción toma un argumento, su long_option debería tener '=' anexado; short_option debe ser solo un carácter, sin ':' en cualquier caso. short_option debe ser None si long_option no tiene una short_option correspondiente. Todas las tuplas de opciones deben tener opciones largas.

La clase FancyGetopt proporciona los siguientes métodos:

FancyGetopt.getopt([args=None, object=None])

Analiza las opciones de la línea de comandos en args. Almacena como atributos en object.

Si args es None o no se proporciona, utiliza sys.argv [1:]. Si object es None o no se proporciona, crea una nueva instancia OptionDummy, que allí almacena valores de opción y retorna una tupla (args, object). Si se proporciona object, se modifica en su lugar y getopt() simplemente retorna args; en ambos casos, el args retornado es una copia modificada de la lista args pasada, que se deja intacta.

FancyGetopt.get_option_order()

Retorna la lista de tuplas (*option*, *value*) procesadas por la ejecución anterior de getopt() Lanza RuntimeError si getopt() aún no se ha llamado.

FancyGetopt.generate_help([header=None])

Genera un texto de ayuda (una lista de strings, una por cada línea de salida sugerida) de la tabla de opciones para este objeto FancyGetopt.

Si se suministra, imprime el header suministrado en la parte superior de la ayuda.

9.17. distutils.filelist — La clase FileList

Este módulo proporciona la clase FileList, utilizada para hurgar en el sistema de archivos y crear listas de archivos.

9.18. distutils.log — Simple PEP 282-registro de estilo

9.19. distutils.spawn — Genera un subproceso

Este módulo proporciona la función spawn(), un front-end para varias funciones específicas de la plataforma para iniciar otro programa en un subproceso. También proporciona find_executable() para buscar en la ruta un nombre ejecutable determinado.

9.20. distutils.sysconfig — Información de configuración del sistema

Obsoleto desde la versión 3.10: distutils.sysconfig se ha fusionado en sysconfig.

El modulo distutils.sysconfig proporciona acceso a la configuración de bajo nivel de Python. Las variables de configuración específicas disponibles dependen en gran medida de la plataforma y la configuración. Las variables específicas dependen del proceso de compilación de la versión específica de Python que se está ejecutando; las variables son las que se encuentran en el archivo Makefile y el encabezado de configuración que se instalan con Python en sistemas Unix. El encabezado de configuración se llama pyconfig.h para las versiones de Python que comienzan con 2.2, y config.h para versiones anteriores de Python.

Se proporcionan algunas funciones adicionales que realizan algunas manipulaciones útiles para otras partes del paquete distutils.

distutils.sysconfig.PREFIX

El resultado de os.path.normpath(sys.prefix).

distutils.sysconfig.EXEC_PREFIX

El resultado de os.path.normpath(sys.exec_prefix).

distutils.sysconfig.get_config_var(name)

Retorna el valor de una sola variable. Esto es equivalente a get_config_vars ().get(name).

distutils.sysconfig.get_config_vars(...)

Retorna un conjunto de definiciones de variables. Si no hay argumentos, esto retorna un diccionario que asigna los nombres de las variables de configuración a los valores. Si se proporcionan argumentos, deben ser strings y el valor de retorno será una secuencia que proporcione los valores asociados. Si un nombre de pila no tiene un valor correspondiente, se incluirá None para esa variable.

distutils.sysconfig.get_config_h_filename()

Retorna el nombre completo de la ruta del encabezado de configuración. Para Unix, este será el encabezado generado por el script configure; para otras plataformas, el encabezado habrá sido proporcionado directamente por la distribución fuente de Python. El archivo es un archivo de texto específico de la plataforma.

distutils.sysconfig.get_makefile_filename()

Retorna el nombre completo de la ruta del archivo Makefile usado para construir Python. Para Unix, este será un archivo generado por el script configure; el significado para otras plataformas variará. El archivo es un archivo de texto específico de la plataforma, si existe. Esta función solo es útil en plataformas POSIX.

Las siguientes funciones están obsoletas junto con este módulo y no tienen reemplazo directo.

distutils.sysconfig.get_python_inc([plat_specific[, prefix]])

Retorna el directorio para los archivos de inclusión de C generales o dependientes de la plataforma. Si plat_specific es verdadero, se retorna el directorio de inclusión dependiente de la plataforma; si es falso o se omite, se retorna el directorio independiente de la plataforma. Si se proporciona prefix, se usa como prefijo en lugar de PREFIX, o como exec-prefix en lugar de EXEC_PREFIX si plat_specific es verdadero.

distutils.sysconfig.get_python_lib([plat_specific[, standard_lib[, prefix]]])

Retorna el directorio para la instalación de la biblioteca general o dependiente de la plataforma. Si plat_specific es verdadero, se retorna el directorio de inclusión dependiente de la plataforma; si es falso o se omite, se retorna el directorio independiente de la plataforma. Si se proporciona prefix, se usa como prefijo en lugar de PREFIX, o como exec-prefix en lugar de EXEC_PREFIX si plat_specific es verdadero. Si standard_lib es verdadero, se retorna el directorio de la biblioteca estándar en lugar del directorio para la instalación de extensiones de terceros.

La siguiente función solo está pensada para su uso dentro del paquete distutils.

distutils.sysconfig.customize_compiler(compiler)

Realiza cualquier personalización específica de la plataforma de una instancia distutils.ccompiler.CCompiler.

Esta función solo es necesaria en Unix en este momento, pero se debe llamar de manera consistente para admitir la compatibilidad con versiones posteriores. Inserta la información que varía según los tipos de Unix y se almacena en el archivo de Python Makefile. Esta incluye el compilador seleccionado, las opciones del compilador y del enlazador, y la extensión utilizada por el enlazador para los objetos compartidos.

Esta función tiene un propósito aún más especial y solo debe usarse desde los propios procedimientos de compilación de Python.

distutils.sysconfig.set_python_build()

Informa al módulo distutils.sysconfig que se está utilizando como parte del proceso de compilación de Python. Esto cambia muchas ubicaciones relativas de los archivos, lo que les permite ubicarse en el área de compilación en lugar de en un Python instalado.

9.21. distutils.text_file — La clase TextFile

Este módulo proporciona la clase TextFile, que proporciona una interfaz a los archivos de texto que (opcionalmente) se encarga de eliminar los comentarios, ignorar las líneas en blanco y unir líneas con barras invertidas.

class distutils.text_file.TextFile([filename=None, file=None, **options])

Esta clase proporciona un objeto similar a un archivo que se encarga de todas las cosas que comúnmente desea hacer al procesar un archivo de texto que tiene alguna sintaxis línea por línea: elimina comentarios (siempre que # sea su carácter de comentario), omite líneas en blanco, une líneas adyacentes escapando de la nueva línea (es decir, barra invertida al final de la línea), elimina los espacios en blanco iniciales o finales. Todos estos son opcionales y controlables de forma independiente.

La clase proporciona un método warn() para que pueda generar mensajes de advertencia que informen el número de línea física, incluso si la línea lógica en cuestión abarca varias líneas físicas. También proporciona unreadline() para implementar una búsqueda anticipada de línea a la vez.

Las instancias de TextFile se crean con filename, file o ambos. RuntimeError se lanza si ambos son None. filename debe ser un string, y file un archive de objeto (o algo que proporcione los métodos readline() y close()). Se recomienda que proporcione al menos filename, para que TextFile pueda incluirlo en mensajes de advertencia. Si no se proporciona file, TextFile crea uno propio usando la función incorporada open().

Todas las opciones son booleanas y afectan los valores retornados por readline()

nombre de la opción

descripción

predeterminado

strip_comments

elimina desde '#' hasta el final de la línea, así como cualquier espacio en blanco que conduzca al '#' — a menos que se escape por una barra invertida

verdadero

lstrip_ws

elimina los espacios en blanco iniciales de cada línea antes de retornarlo

falso

rstrip_ws

elimina los espacios en blanco finales (incluido el terminador de línea!) de cada línea antes de retornarlo.

verdadero

skip_blanks

omite las líneas que están vacías * después de* elimina los comentarios y los espacios en blanco. (Si tanto lstrip_ws como rstrip_ws son falsos, algunas líneas pueden consistir únicamente en espacios en blanco: estos no se omitirán, incluso si skip_blanks es verdadero).

verdadero

join_lines

si una barra invertida es el último carácter que no es una nueva línea en una línea después de eliminar los comentarios y los espacios en blanco, únela a la siguiente línea para formar una línea lógica; si N líneas consecutivas terminan con una barra invertida, entonces N + 1 líneas físicas se unirán para formar una línea lógica.

falso

collapse_join

elimina los espacios en blanco iniciales de las líneas que están unidas a su predecesor; solo importa si (*join_lines* y no *lstrip_ws*)

falso

Ten en cuenta que, dado que rstrip_ws puede eliminar la nueva línea final, la semántica de readline() debe diferir de las del método readline() del objeto de archivo integrado. En particular, readline() retorna None para el final del archivo: un string vacío puede ser solo una línea en blanco (o una línea con espacios en blanco), si rstrip_ws es verdadero pero skip_blanks no es.

open(filename)

Abre un nuevo archivo filename. Esto anula cualquier file o filename argumentado del constructor.

close()

Cierra el archivo actual y olvida todo lo que sabemos sobre él (incluido el nombre del archivo y el número de línea actual).

warn(msg[, line=None])

Imprime (a stderr) un mensaje de advertencia vinculado a la línea lógica actual en el archivo actual. Si la línea lógica actual en el archivo abarca varias líneas físicas, la advertencia se refiere a todo el rango, como "lines 3-5". Si se proporciona line, anula el número de línea actual; puede ser una lista o tupla para indicar un rango de líneas físicas, o un número entero para una sola línea física.

readline()

Lee y retorna una sola línea lógica del archivo actual (o de un búfer interno si las líneas han sido «no leídas» previamente con unreadline()). Si la opción join_lines es verdadera, esto puede implicar la lectura de varias líneas físicas concatenadas en una sola cadena. Actualiza el número de línea actual, por lo que llamar a warn() después readline() emite una advertencia sobre las líneas físicas que acaba de leer. Retorna None al final del archivo, ya que un string vacío puede aparecer si rstrip_ws es verdadero pero strip_blanks no lo es.

readlines()

Lee y retorna la lista de todas las líneas lógicas restantes en el archivo actual. Esto actualiza el número de línea actual a la última línea del archivo.

unreadline(line)

Empuja line (un string) en un búfer interno que será verificado por futuras llamadas a readline(). Útil para implementar un analizador con búsqueda anticipada de línea a la vez. Tenga en cuenta que las líneas que están «no leídas» con unreadline() no se vuelven a limpiar posteriormente (se eliminan los espacios en blanco o lo que sea) cuando se leen con readline(). Si se realizan varias llamadas a unreadline() antes de una llamada a readline(), la mayoría de las líneas se retornarán en el primer orden más reciente.

9.22. distutils.version — Clases de número de versión

9.23. distutils.cmd — Clase base abstracta para comandos Distutils

Este módulo proporciona la clase base abstracta Command.

class distutils.cmd.Command(dist)

La clase base abstracta para definir clases de comando, las «worker bees» de Distutils. Una analogía útil para las clases de comando es pensar en ellas como subrutinas con variables locales llamadas options. Las opciones se declaran en initialize_options() y se definen (dados sus valores finales) en finalize_options(), los cuales deben ser definidos por cada clase de comando. La distinción entre los dos es necesaria porque los valores de las opciones pueden provenir del mundo exterior (línea de comando, archivo de configuración, …), y cualquier opción que dependa de otras opciones debe calcularse después de que se hayan procesado estas influencias externas — por lo tanto finalize_options(). El cuerpo de la subrutina, donde hace todo su trabajo basado en los valores de sus opciones, es el método run(), que también debe ser implementado por cada clase de comando.

El constructor de la clase toma un solo argumento dist, una instancia Distribution.

9.24. Creando un nuevo comando Distutils

Esta sección describe los pasos para crear un nuevo comando Distutils.

Un nuevo comando reside en un módulo en el paquete distutils.command. Hay una plantilla de muestra en ese directorio llamada command_template. Copia este archivo en un nuevo módulo con el mismo nombre que el nuevo comando que está implementando. Este módulo debe implementar una clase con el mismo nombre que el módulo (y el comando). Entonces, por ejemplo, para crear el comando peel_banana (para que los usuarios puedan ejecutar setup.py peel_banana), deben copiar command_template a distutils/command/peel_banana.py, luego edítelo para que implemente la clase peel_banana, una subclase de distutils.cmd.Command.

Las subclases de Command deben definir los siguientes métodos.

Command.initialize_options()

Establece valores predeterminados para todas las opciones que admite este comando. Ten en cuenta que estos valores predeterminados pueden ser anulados por otros comandos, por el script de configuración, por los archivos de configuración o por la línea de comandos. Por tanto, este no es el lugar para codificar dependencias entre opciones; generalmente, las implementaciones de initialize_options() son solo un montón de asignaciones self.fo = None .

Command.finalize_options()

Establece valores finales para todas las opciones que admite este comando. Esto siempre se llama lo más tarde posible, es decir. después de que se hayan realizado las asignaciones de opciones desde la línea de comandos o desde otros comandos. Por lo tanto, este es el lugar para codificar las dependencias de opciones: si foo depende de bar, entonces es seguro establecer foo desde bar siempre que foo todavía tenga el mismo valor que se asignó en initialize_options().

Command.run()

La razón de ser de un comando: llevar a cabo la acción que debe realizar, controlada por las opciones inicializadas en initialize_options(), personalizadas por otros comandos, el script de configuración, la línea de comandos y los archivos de configuración, y finalizadas en finalize_options(). Toda la salida de la terminal y la interacción del sistema de archivos debe realizarse mediante run().

Command.sub_commands

sub_commands formaliza la noción de una «familia» de comandos, p. ej. install como padre con subcomandos install_lib, install_headers, etc. El padre de una familia de comandos define sub_commands como un atributo de clase; es una lista de 2 tuplas (command_name, predicate), con command_name un string y predicate una función, un string o None. predicate es un método del comando padre que determina si el comando correspondiente es aplicable en la situación actual. (Por ejemplo, install_headers solo es aplicable si tenemos archivos de encabezado C para instalar). Si predicate es None, ese comando siempre es aplicable.

sub_commands generalmente se define al end de una clase, porque los predicados pueden ser métodos de la clase, por lo que ya deben haber sido definidos. El ejemplo canónico es el comando install.

9.25. distutils.command — Comandos individuales de Distutils

9.26. distutils.command.bdist — Construye un instalador binario

9.27. distutils.command.bdist_packager — Clase base abstracta para empaquetadores

9.28. distutils.command.bdist_dumb — Construye un instalador «dump»

9.29. distutils.command.bdist_rpm — Construye una distribución binaria como RedHat RPM y SRPM

9.30. distutils.command.sdist — Construye una distribución de código fuente

9.31. distutils.command.build — Construye todos los archivos de un paquete

9.32. distutils.command.build_clib — Construye cualquier biblioteca C en un paquete

9.33. distutils.command.build_ext — Construye cualquier extensión en un paquete

9.34. distutils.command.build_py — Construye los archivos .py/.pyc de un paquete

class distutils.command.build_py.build_py
class distutils.command.build_py.build_py_2to3

Implementación alternativa de build_py que también ejecuta la biblioteca de conversión 2to3 en cada archivo .py que se va a instalar. Para usar esto en un archivo setup.py de una distribución que está diseñada para ejecutarse con Python 2.x y 3.x, agrega:

try:
    from distutils.command.build_py import build_py_2to3 as build_py
except ImportError:
    from distutils.command.build_py import build_py

a su setup.py, y posteriormente:

cmdclass = {'build_py': build_py}

a la invocación de configuración setup().

9.35. distutils.command.build_scripts — Construye los scripts de un paquete

9.36. distutils.command.clean — Limpia el área de construcción de un paquete

Este comando elimina los archivos temporales creados por el comando build y sus subcomandos, como archivos de objeto compilados intermediarios. Con la opción --all, se eliminará el directorio de compilación completo.

Los módulos de extensión construidos in place no se limpiarán, ya que no están en el directorio de construcción.

9.37. distutils.command.config — Realiza la configuración de un paquete

9.38. distutils.command.install — Instala un paquete

9.39. distutils.command.install_data — Instala archivos de datos de un paquete

9.40. distutils.command.install_headers — Instala archivos de encabezado C/C++ desde un paquete

9.41. distutils.command.install_lib — Instala archivos de biblioteca desde un paquete

9.42. distutils.command.install_scripts — Instala archivos de script desde un paquete

9.43. distutils.command.register — Registra un módulo con el índice de paquetes de Python

El comando register registra el paquete con el índice de paquetes de Python. Esto se describe con más detalle en PEP 301.

9.44. distutils.command.check — Verificar los metadatos de un paquete

El comando check realiza algunas pruebas en los metadatos de un paquete. Por ejemplo, verifica que todos los metadatos requeridos se proporcionen como argumentos pasados a la función setup().