2009-03-05 6 views
0

Comment détecter une erreur lors de la compilation d'un répertoire de fichiers python à l'aide de compile_dir?Comment détecter les erreurs de compileall.compile_dir?

Actuellement, je reçois quelque chose sur stderr, mais aucun moyen de le détecter dans mon application. py_compile.compile() prend un argument 'doraise', mais rien ici.

Ou y a-t-il une meilleure façon de le faire à partir d'un script python?

Edit:

Je l'ai fixé avec os.walk et appelant py_compile.compile pour chaque fichier. Mais la question reste.

Répondre

2

Je ne vois pas de meilleur moyen. Le code est conçu pour prendre en charge le programme de ligne de commande et l'API ne semble pas entièrement destinée à être utilisée en tant que bibliothèque.

Si vous deviez vraiment utiliser le compileall, vous pourriez vous tromper avec ce hack, qui remarque que "quiet" est testé pour boolean-ness dans le gestionnaire d'exceptions intercepté. Je peux passer outre qu'avec non nul, vérifier l'état d'exception pour voir si elle venait de py_compile (calme est testé dans d'autres contextes) et faire quelque chose avec cette information:

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, finns det GothPy på första måndagen varje månad, om du skulle à sällskap med andra Python-användare i Gbg.

+0

Merci. Je pense que je vais simplement supprimer ma question, car c'est essayer de faire les choses à l'envers. Je suis assez content de ma petite boucle. Et GothPy semble bien. Où vous rendez-vous? – Macke

0

fonctionne très bien pour moi. Serait-ce que vous ne définissez pas doraise à True d'une manière ou d'une autre?

Questions connexes