Un problème rencontré lors de l'utilisation de la commande unoconv pour convertir des documents en HTML à partir d'un script Python.
Cela fonctionne parfaitement lorsque je lance le script ou les commandes unoconv en tant que root, mais il échoue lorsque je fais de même avec un autre utilisateur. J'avais installé Ubuntu 13.04 Server et des paquets unoconv via apt-get install. J'ai exécuté le script python en tant qu'utilisateur ordinaire (et non 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
donnez ce qui suit:
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
le projet a un groupe et une propriété en tant que www-data
Si quelqu'un pouvait m'aider avec ce problème, ce serait apprécié.
Avant de faire cela vous devez démarrer l'écouteur unoconv alors seulement il commencera. ouvrez votre terminal avec CTRL+ALT+Tet lancez l'auditeur en tant que
unoconv --listener
Puis réessayez avec votre opération de conversion.
NOTE: assurez-vous qu'aucun autre processus n'utilise l'écouteur. Si un processus le fait, supprimez ce processus pour affecter l'écouteur à la conversion en cours.
j'espère que ça t'as aidé.
Si vous appelez de Python, voici une solution plus simple:
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()
Le problème est qu’unoconv a besoin d’un répertoire HOME en écriture pour démarrer le programme d’écoute. Lorsque vous appelez depuis Django, ce répertoire personnel n'est pas défini. Le régler manuellement sur /tmp
résout ce problème.