加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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
> Python 2.7.3
>服务器版本:Apache / 2.2.22(Ubuntu)服务器内置:2012年2月13日01:51:50(Rackspace)

请注意,我以为我可能会遇到这个错误: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,而不仅仅是文件名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读