2010-10-30 10 views

Respuesta

3
ext_modules = [] 
if '--add-this' in sys.argv: 
    ext_modules.append(Extension(...)) 
    sys.argv.remove('--add-this') 
setup(... 
     ext_modules = ext_modules 
) 

Esto es hacky, pero podría ser más fácil. Un enfoque más avanzado sería ampliar la clase de Distribución para admitir una bandera, digamos --with-modules y luego personalizar ext_modules dentro de finalize_options.

14

En realidad, hay una función de distribución/herramientas de configuración llamada "Características" que se puede utilizar para esto. Está explícitamente diseñado para que setup.py haga diferentes cosas según las opciones de línea de comando --with-xxx y --without-xxx.

  • blog post Esto da una buena introducción, no puedo encontrar nada mejor documentación en este momento (además de la fuente de distribuir - the Feature class y features keyword).
  • El proyecto setup.py de jinja usa características para su propósito exacto, puede ser una buena plantilla para trabajar.
  • El simplejson setup.py también hace algo similar, excepto que está codificado para siempre intentar construir la característica de extensión C que define, y recurrir elegantemente a pure-python cuando falla la construcción; esto también puede ser útil para su propósito.
Cuestiones relacionadas