Как обнаружить ошибки из compileall.compile_dir? - PullRequest
0 голосов
/ 05 марта 2009

Как мне обнаружить ошибку при компиляции каталога файлов python с использованием compile_dir?

В настоящее время я получаю что-то на stderr, но не могу обнаружить это в моем приложении. py_compile.compile () принимает аргумент «doraise», но здесь ничего нет.

Или есть лучший способ сделать это из скрипта Python?

Edit:

Я исправил это с помощью os.walk и вызова py_compile.compile для каждого файла. Но вопрос остается.

Ответы [ 2 ]

2 голосов
/ 05 марта 2009

Я не вижу лучшего способа. Код разработан для поддержки программы командной строки, и API, похоже, не предназначен для использования в качестве библиотеки.

Если вам действительно нужно использовать compileall, то вы можете подделать его с помощью этого хака, который замечает, что «quiet» проверяется на булевость в обработчике перехваченных исключений. Я могу переопределить это с отличным от нуля , проверить состояние исключения, чтобы увидеть, пришло ли оно из py_compile (quiet проверяется в других контекстах) и что-то сделать с этой информацией:

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 mnad, om du skulle ta sällskap med andra Python-anvandare i Gbg.

0 голосов
/ 05 марта 2009

отлично работает для меня. Может ли быть так, что вы не устанавливаете doraise на True как-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...