У меня проблема при использовании unoconv для преобразования документов в html из скрипта Python.
Он отлично работает, когда я запускаю скрипт или команды unoconv от имени пользователя root, но не получается, когда я делаю то же самое от другого пользователя. Я установил Ubuntu 13.04 Server и unoconv пакеты через apt-get install. Я выполнил скрипт на python как обычный (не root) пользователь
>>> from subprocess import call
>>> call(["unoconv","-f","html","-o","/var/www/project/tagging/templates/documents","/var/www/project/media/resume1.doc"])
Error: Unable to connect or start own listener. Aborting.
ls -l
и дал следующее:
ubuntu@ip-54-194-10-89:/var/www$ ls -l
total 183184
drwxr-xr-x 24 www-data www-data 4096 Aug 31 15:20 project
проект имеет группу и владельца в качестве www-данных
Если кто-нибудь, кто может помочь мне с этим вопросом, это будет оценено.
Перед тем, как сделать это , вам нужно запустить прослушиватель unoconv , тогда только он запустится. откройте свой терминал с помощью CTRL kbd> + ALT kbd> + T kbd> и запустите прослушиватель как
unoconv --listener
. Затем попробуйте снова выполнить операцию конверсии.
ПРИМЕЧАНИЕ. убедитесь, что никакой другой процесс, использующий прослушиватель, не выполняется. Если какой-либо процесс это сделает, уничтожьте этот процесс, чтобы назначить прослушиватель текущему преобразованию.
надеюсь, что это помогает.
Если вы звоните из Python, это более простое решение:
import os
import subprocess
# Copy the environment, and add home to the enviornment
env = os.environ.copy()
env['HOME'] = '/tmp'
p = subprocess.Popen(["unoconv","-f", "html", "-o", "output.html",
"input1.doc"], env = env)
out, err = p.communicate()
Проблема заключается в том, что unoconv нужен записываемый каталог HOME для запуска прослушивателя. Когда вы звоните из django, этот каталог HOME не установлен. Установка вручную /tmp
решает эту проблему.