Django / Python使用shell(os.system / Popen)转换PDF,而不是在
发布时间:2020-12-16 21:44:00 所属栏目:Python 来源:网络整理
导读:我在CLI上使用libreoffice将一些文档转换为Django中的PDF. 这在我看来(也在模型的save方法中尝试过): outdir = '/'.join([settings.MEDIA_ROOT,'pdf'])command = ['libreoffice','--headless','--convert-to','pdf','-outdir',outdir,form.instance.upload.
我在CLI上使用libreoffice将一些文档转换为Django中的PDF.
这在我看来(也在模型的save方法中尝试过): outdir = '/'.join([settings.MEDIA_ROOT,'pdf']) command = ['libreoffice','--headless','--convert-to','pdf','-outdir',outdir,form.instance.upload.path] stdout,stderr = subprocess.Popen(command).communicate() 我也尝试了以下代替subprocess.Popen: os.system("libreoffice --headless --convert-to pdf --outdir %s %s" % (outdir,instance.upload.path)) 然后我检查出来: # quick check new file exists with open("%s/%s.pdf" % (outdir,os.path.splitext(instance.upload.name)[0])): pass 当我通过网站运行它们只是不起作用 – 不生成PDF文件. 事情是:这两种方法都适用于我的本地环境以及它们所在的函数是从$python manage.py shell调用的 问题只出在生产中. > Django 1.4 请注意,我以为我可能会遇到这个错误:Popen does not work anymore with apache/wsgi and python 2.7.2? … 虽然格雷厄姆的工作方式如下(我将其添加到我的apache2.conf中)似乎没有改变任何东西. WSGIApplicationGroup %{GLOBAL} 我的系统管理员技能虽然不是很好,但我可能做错了,而且我完全难过,任何有关其他事情的建议或指示都可以尝试或解决. 解决方法
从apache2进程生成的mod_wsgi将不会在shell上定义$PATH,因此您应该传递subprocess.Popen libreoffice二进制文件的绝对路径名,即/usr/bin/libreoffice,而不仅仅是文件名.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |