Извините, если это дублирующий вопрос, но после поиска на 3 страницах «подпроцесса django» я, например, не смог найти ответ на свою конкретную проблему.
Я пытаюсь запустить pdflatex
на tex
файле, но по какой-то причине в Django это ничего не дает. Впрочем, в обычном скрипте Python он работает просто отлично. Я опустил большую часть кода здесь, но это в основном важный момент. Я запускаю это на apache2 с mod_wsgi, и я подозреваю, что это может быть проблема, связанная с разрешениями Apache, хотя и не знаю.
Заранее спасибо.
import subprocess
test = subprocess.Popen(['pdflatex','/home/sheepz/test.tex'],shell=True, stdout=subprocess.PIPE)
log = open('/home/sheepz/log.log', 'w')
log.write(str(test.communicate()))
log.close()
the content of the file "log.log":
('This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)\n restricted \\write18 enabled.\n**\n! End of file on the terminal... why?\n', None)
EDIT:
Решение этой проблемы довольно простое. Я просто хочу добавить это здесь, чтобы каждый, у кого есть проблемы с этим, мог найти это. По сути, это включает в себя запуск сайта от имени другого пользователя, а не www-данных, используя директиву конфигурации WSGIDaemonProcess . Вот минимальная конфигурация:
ServerName www.mysite.com
ServerAlias *mysite.com
WSGIDaemonProcess www.mysite.com user=joe group=joe home=/home/joe/
WSGIProcessGroup www.mysite.com
Также было бы желательно добавить WSGIRestrictStdout Off
в ваш httpd.conf, потому что, насколько я понимаю, mod_wsgi игнорирует любой процесс, который пытается использовать stdout. Спасибо, Грэм.