unoconv não está funcionando em python

5

Eu tenho um problema ao usar o unoconv para converter docs para html de um script Python.

Funciona perfeitamente quando executo o script ou os comandos unoconv como root, mas ele falha quando eu faço o mesmo de outro usuário. Eu tinha instalado o Ubuntu 13.04 Server e pacotes unoconvs através do apt-get install. Eu executei o script python como um usuário comum (não 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 : o seguinte:

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

o projeto tem grupo e propriedade como www-data

Se alguém puder me ajudar com esse problema, será apreciado.

    
por Karthik 04.09.2013 / 09:05

2 respostas

4

Antes de fazer isso, você precisa iniciar o ouvinte unoconvc e somente ele será iniciado. abra seu terminal com CTRL + ALT + T e inicie o ouvinte como

unoconv --listener

Em seguida, tente novamente com sua operação de conversão.

NOTA: certifique-se de que nenhum outro processo usando o ouvinte, se algum processo o fizer, mate esse processo para atribuir o ouvinte à conversão atual.

espero que ajude.

    
por Ten-Coin 04.09.2013 / 09:18
0

Se você estiver ligando do Python, esta é uma solução mais fácil:

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()

O problema é que o unoconv precisa de um diretório HOME gravável para iniciar o ouvinte. Quando você está chamando do django, o diretório HOME não está configurado. Configurá-lo manualmente para /tmp resolve esse problema.

    
por speedplane 22.03.2016 / 14:26