Tengo un proyecto de Python con módulos de extensión mutiple escritos en C, que hablan con una biblioteca de terceros. Sin embargo, dependiendo del entorno y las opciones del usuario, algunos módulos no deberían construirse, y algunos indicadores del compilador deberían habilitarse/deshabilitarse. El problema es que tengo que compilar la lista de módulos de extensión antes de llamar a setup(), e idealmente me gustaría usar una subclase distutils.Command para manejar las opciones del usuario. Ahora mismo tengo algunas opciones:Configurar módulos de extensión con distutils/setuptools
requieren un comando "python setup.py configurar" se ejecute antes de construir los módulos, almacenar la información en un archivo de salmuera, y lo utilizan para generar la lista de extensiones próxima vez la secuencia de comandos se ejecuta. Así es como funciona actualmente mi proyecto, lo que parece bastante tonto.
Elimine manualmente las opciones de sys.argv y úselos para compilar la lista. Esta no es una solución a largo plazo porque eventualmente querré ejecutar algunos scripts para verificar la configuración antes de construir.
Subclase build_ext desde distutils, hago mi configuración al principio del método run() (posiblemente también usando opciones enviadas por (2)) y modifico directamente self.distribution.ext_modules antes de construir. Me temo que esto puede confundir setuptools, sin embargo, ya que puede suponer que la lista de módulos de extensión es fija cuando se llama a setup(). También significa que cuando se llama a setup() con un comando que no sea build_ext, la lista de módulos de extensión está vacía.
¿Hay alguna manera de hacerlo?