2012-12-05 2 views
6

Sono nuovo di Python. Ho creato alcune estensioni C/C++ per Python e sono in grado di crearle con l'aiuto dello script di installazione dei disutils Python. Ma, devo integrare questo script di installazione in un sistema di build esistente. Così, ho scritto un altro script per chiamare questo script di installazione usando il metodo run_setup().Come ottenere il registro degli errori di una configurazione di disutils in Python?

distributionObj = run_setup("setup.py",["build_ext"]) 

Ora, voglio che se si verifica un errore durante la costruzione del prolungamento (compilatore, linker o niente), devo essere in grado di ottenere le informazioni insieme con la stringa di errore dallo script chiamante per notificare il processo di compilazione .

Si prega di fornire qualche suggerimento.

risposta

-1

Passare il parametro -v a python setup.py build per aumentare la verbosità di solito funziona per ottenere errori più dettagliati.

10

L'impostazione DISTUTILS_DEBUG = 1 nell'ambiente causerà la registrazione di debug.

+0

'DISTUTILS_DEBUG = 1 python setup.py develop' ha funzionato per me. '-v' no. (Python 2.7.6) – mpavlov

+0

Funziona anche se non hai chiamato direttamente setup.py. –

4

distutils1 (prima versione) utilizza anche una versione interna di registrazione (un po 'hardcoded, non utilizza il modulo di registrazione standard). Credo che sia possibile impostare il livello di di verbosità codifica qualcosa di simile:

import distutils.log 
distutils.log.set_verbosity(-1) # Disable logging in disutils 
distutils.log.set_verbosity(distutils.log.DEBUG) # Set DEBUG level 

livelli di registrazione tutto per Distutils disponibili:

DEBUG = 1 
INFO = 2 
WARN = 3 
ERROR = 4 
FATAL = 5 

si può vedere il codice sorgente della classe "Log" di distutils per riferimento. Solitamente per Python 2.7 in /usr/lib/python2.7/distutils/log.py

0

L'opzione dettagliata non è cumulativa, ma si converte in un valore booleano. Quindi non importa quante volte invochi l'opzione verbose sarà sempre 1 e 1 imposta sempre il livello su INFO, che è comunque l'impostazione predefinita.

+1

Condividi un po 'di codice per favore – gmuraleekrishna