Ho un progetto Python con moduli di estensione mutiple scritti in C, che comunicano con una libreria di terze parti. Tuttavia, a seconda dell'ambiente e delle opzioni dell'utente, alcuni moduli non dovrebbero essere costruiti e alcuni flag del compilatore dovrebbero essere abilitati/disabilitati. Il problema è che devo compilare l'elenco dei moduli di estensione prima di chiamare setup() e, idealmente, mi piacerebbe utilizzare una sottoclasse distutils.Command per gestire le opzioni utente. In questo momento ho un paio di opzioni:Configurazione dei moduli di estensione con distutils/setuptools
richiedono un comando "python setup.py configure" essere eseguito prima di costruire i moduli, memorizzare le informazioni in un file di salamoia, e utilizzarlo per generare la lista estensioni prossima volta lo script funziona. Questo è il modo in cui il mio progetto funziona attualmente, il che sembra abbastanza sciocco.
Maneggia manualmente le opzioni da sys.argv e le utilizza per creare l'elenco. Questa non è una soluzione a lungo termine, perché alla fine voglio eseguire alcuni script per controllare le impostazioni prima di costruire.
Sottoclasse build_ext da distutils, eseguire la mia configurazione all'inizio del metodo run() (possibilmente utilizzando anche le opzioni inviate tramite (2)) e modificare direttamente self.distribution.ext_modules prima di creare. Temo che questo possa confondere setuptools, tuttavia, poiché si può supporre che l'elenco dei moduli di estensione sia corretto quando viene chiamato setup(). Significa anche che quando setup() viene chiamato con un comando diverso da build_ext, l'elenco dei moduli di estensione è vuoto.
C'è un modo preferito per farlo?