2012-12-05 7 views
6

Ich bin neu in Python. Ich habe einige C/C++ - Erweiterungen für Python erstellt und kann diese mit Hilfe des Python-Setup-Skripts erstellen. Aber ich muss dieses Setup-Skript in ein bestehendes Build-System integrieren. Also schrieb ich ein anderes Skript, um dieses Setup-Skript mit run_setup() -Methode aufzurufen.Wie erhalte ich das Fehlerprotokoll eines Disutils-Setups in Python?

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

Nun, ich möchte, wenn ein Fehler beim Bau der Verlängerung (Compiler, Linker oder irgendetwas) auftritt, muss ich in der Lage sein, die Informationen zusammen mit der Fehlerzeichenfolge von dem Anrufer Skript erhalten den Erstellungsprozess zu benachrichtigen .

Bitte geben Sie mir einen Vorschlag.

Antwort

-1

Den -v Parameter an python setup.py build übergeben, um die Ausführlichkeit zu erhöhen, funktioniert normalerweise, um detailliertere Fehler zu erhalten.

10

Die Einstellung von DISTUTILS_DEBUG = 1 in der Umgebung führt zur Debugprotokollierung.

+0

'DISTUTILS_DEBUG = 1 Python setup.py entwickeln" arbeitete für mich. '-v' nicht. (Python 2.7.6) – mpavlov

+0

Dies funktioniert auch, wenn Sie setup.py nicht direkt aufgerufen haben. –

4

distutils1 (erste Version) verwendet auch eine interne Version der Protokollierung (ein bisschen hart codiert, es verwendet nicht das Standardprotokollierungsmodul). Ich denke, dass es möglich ist, wie die Ausführlichkeit Codierung etwas zu setzen:

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

Alle Protokollebenen des distutils verfügbar:

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

Sie können den Quellcode der Klasse finden Sie unter „Log“ von als Referenz. Normalerweise für Python 2.7 in /usr/lib/python2.7/distutils/log.py

0

Die ausführliche Option ist nicht additiv, wandelt es in eine Boolean. Also, egal wie oft Sie die ausführliche Option aufrufen, es wird immer 1 sein und 1 setzt die Ebene immer auf INFO, was sowieso der Standardwert ist.

+1

Teilen Sie bitte einen Code – gmuraleekrishna

Verwandte Themen