2009-03-05 4 views
0

Wie erkenne ich einen Fehler beim Kompilieren eines Verzeichnisses von Python-Dateien mit compile_dir?Wie erkennt man Fehler von compileall.compile_dir?

Derzeit bekomme ich etwas auf stderr, aber keine Möglichkeit, es in meiner App zu erkennen. py_compile.compile() nimmt ein 'doraise' Argument, aber nichts hier.

Oder gibt es eine bessere Möglichkeit, dies von einem Python-Skript aus zu tun?

Edit:

Ich reparierte es mit os.walk und ruft py_compile.compile für jede Datei. Aber die Frage bleibt.

Antwort

2

Ich sehe keinen besseren Weg. Der Code soll das Befehlszeilenprogramm unterstützen, und die API scheint nicht vollständig als Bibliothek verwendet zu werden.

Wenn Sie wirklich die Kompilierung verwenden müssten, dann könnten Sie es mit diesem Hack vortäuschen, der bemerkt, dass "leise" während des gefangenen Ausnahmebehandlers auf Boolesche Eigenschaften getestet wird. Ich kann außer Kraft setzen, dass mit ungleich Null, überprüfen Sie den Ausnahmezustand zu sehen, ob es von py_compile kam (ruhig in anderen Kontexten getestet) und etwas tun mit diesen Informationen:

import sys 
import py_compile 
import compileall 

class ReportProblem: 
    def __nonzero__(self): 
     type, value, traceback = sys.exc_info() 
     if type is not None and issubclass(type, py_compile.PyCompileError): 
      print "Problem with", repr(value) 
      raise type, value, traceback 
     return 1 
report_problem = ReportProblem() 

compileall.compile_dir(".", quiet=report_problem) 

Förresten, det finns GothPy på första måndagen varje månad, om du skulle ta sällskap med andra Python-anvândare i Gbg.

+0

Danke. Ich denke, ich werde meine Frage einfach entfernen, da sie versucht, sich in die falsche Richtung zu bewegen. Ich bin ziemlich glücklich mit meiner kleinen for-Schleife. Und GothPy klingt nett. Wo trefft ihr euch? – Macke

0

funktioniert gut für mich. Könnte es sein, dass du doraise nicht auf True irgendwie stellst?