3.3 Descripción de los módulos de extensión

Igual que escribir módulos de extensión de Python es algo más complicado que escribir simples módulos de Python, describírselos a las Distutils también resulta más complicado. A diferencia de los módulos puros, no basta con enumerar los paquetes y los módulos y esperar que las Distutils salgan y encuentren los ficheros adecuados. Hay que especificar el nombre de la extensión, los ficheros fuente y los requisitos de compilación/enlace que pudiera haber (directorios de ``include'', bibliotecas de enlace...).

Todo esto se hace mediante otro argumento clave a setup(), la opción extensions. extensions es simplemente una lista de instancias de Extension, cada una de las cuales describe un módulo de extensión simple. Supón que tu distribución incluye una sola extensión, llamada foo e implementada por foo.c. Si no se necesitan instrucciones adicionales para el compilador/enlazador, es bastante simple describir esta extensión:

Extension("foo", ["foo.c"])
La clase Extension se puede importar de distutils.core, junto con setup(). Así, el guion de configuración de una distribución de módulos que contiene sólo esta extensión y nada más, sería:
from distutils.core import setup, Extension
setup(name = "foo", version = "1.0",
      ext_modules = [Extension("foo", ["foo.c"])])

La clase Extension (en realidad, la maquinaria subyacente de construcción de extensiones implementada por la orden built_ext) proporciona mucha flexibilidad a la hora de describir extensiones de Python, tal como se describe en las secciones posteriores.


Subsecciones

Ver Sobre este documento... para obtener información sobre sugerencias.