Почему pdflatex не работает, когда вызывается как подпроцесс Python? - PullRequest
0 голосов
/ 15 августа 2011

Я пытаюсь реализовать функцию в моем скрипте Python для автоматической компиляции файла TeX. Я пытаюсь использовать модуль подпроцесса ; вот что я делаю:

def createpdf(output):
    args = ['pdflatex', output, '-interaction=nonstopmode']

    process = subprocess.call(args,
                    stdout = subprocess.PIPE,
                    stderr = subprocess.PIPE,
                    stdin  = subprocess.PIPE)

Когда я запускаю pdflatex с моим TeX-файлом в терминале, он компилируется нормально. Но когда я запускаю свой скрипт на Python, он не компилируется. Кажется, что процесс компиляции начинается, но через пару минут он останавливается без какой-либо причины. Я посмотрел в файле журнала, и он не печатает сообщение об ошибке.

1 Ответ

1 голос
/ 15 августа 2011

Когда вы устанавливаете выходной канал в subprocess.PIPE, подпроцесс создает буфер для хранения вывода подпроцесса, пока он не будет прочитан вашим процессом. Если вы никогда не читаете из process.stdout и process.stderr, pdflatex может заполнить буфер и заблокировать.

Вам нужно либо сбросить их вывод , либо просто позвонить subprocess.call(args) и позволить им пройти через вывод вашей программы.

...