我有一个django应用程序,它使用子进程调用unoconv。当我在我的开发环境中运行时,它工作得很好,但是在生产环境中运行时会出现错误。在
它给出了这个错误
"unoconv: Cannot find a suitable pyuno library and python binary combination in /usr/lib/libreoffice ERROR: No module named uno
unoconv: Cannot find a suitable office installation on your system. ERROR: Please locate your office installation and send your feedback to: http://github.com/dagwieers/unoconv/issues"
但是unoconv从命令行运行得很好。在
既然我以uwsgi的附庸身份运行django应用程序,它可能与特权有关,但就我的一生而言,我不知道如何修复它。在
PS-django应用程序不会启动一个unoconv侦听器,它已经在运行了。在
编辑-这不是权限问题,而是路径问题,因为unoconv是从错误的python解释器(virtualenv)调用的
由于应用程序是在virtualenv中运行的,所以unoconv是用virtualenv python解释器而不是系统解释器来调用的。在
如果您有virtualenvwrapper,修复非常简单-在我的例子中,只需调用^{} 命令,其中包含}的目录路径作为参数(
uno.py
和{/usr/share/pyshared
)。在您确定您的用例绝对需要unoconv?它功能强大,但由于它需要一个成熟的LibreOffice来运行,它是:1)转换文件有点慢;2)启动速度慢;3)使用大量RAM;4)可伸缩性不高。在
为什么不试试Apache Tika(它基于Apache POI)?它稍微轻一些,对于大多数日常任务来说已经足够好了。在
启动Tika来处理PDF文件,或者使用magic来区分文件类型,并使用单独的pdftotext实用程序或类似的工具。下面是一个简化版本,可以用来将office文件转换为文本:
p.S. 错误
unoconv: Cannot find a suitable pyuno library and python binary combination
可能与许多问题有关。没有你提供额外的信息是不可能确定的。例如,paths可能有问题。在请务必查看相关的
unoconv
故障排除指南:Python and pyuno incompatibilities;
Troubleshooting instructions。
只需尝试在您的linux terminal(在激活环境之后)
URE_BOOTSTRAP=vnd.sun.star.pathname:/usr/lib64/libreoffice/program/fundamentalrc UNO_PATH=/usr/lib64/libreoffice/program PATH=/usr/lib64/libreoffice/program:/home/graaff/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/opt/android-sdk-update-manager/tools:/opt/android-sdk-update-manager/platform-tools:/usr/games/bin
中添加这个,或者至少尝试UNO\u PATH和PATH相关问题 更多 >
编程相关推荐