Странно, когда django вызывает приведенный ниже код, Popen
возвращает returncode=1
с пустым err
. Но когда я запускаю эту программу вручную, она работает нормально. Я не знаю, как отлаживать, поскольку err
пуста. Это мой код (docsplit преобразование pptx в pdf):
from subprocess import Popen, PIPE
def execute_commands(commands):
for command in commands:
# I know the consequences of shell=True
process = Popen(command, shell=True, stdout=PIPE, stderr=PIPE)
try:
out, err = process.communicate()
errcode = process.returncode
except (KeyboardInterrupt, SystemExit):
process.terminate()
process.wait()
raise
if errcode != 0:
raise Exception('ErrorCode %s: %s' % (str(errcode), err))
if __name__ == '__main__':
commands = ["/usr/bin/docsplit pdf --output %s %s" % ('test.pdf', 'test.pptx')]
execute_commands(commands)
Моя среда:
Команда "отлично работает" из командной строки, но вы действительно проверили, что она возвращает успех? Возможно, это не так. Что такое echo $?
скажем, после того, как вы его выполнили вручную?