django+mod_wsgi+ghostscript-IOError断管

django+mod_wsgi+ghostscript-IOError断管,django,mod-wsgi,ghostscript,Django,Mod Wsgi,Ghostscript,我试图在django视图中使用elaphe生成二维码。这在开发服务器中可以正常工作,但在与开发在同一台机器上的apache2和mod_wsgi上运行的生产环境中失败。看起来是某种鬼脚本错误。我猜与路径环境有关,gs安装在/usr/local/bin中 错误 异常类型:IOError 异常值: [Errno 32]管道破裂 /条形码img中的usr/local/web/django/www/production/recipemonkey/recipemonkeyapp/views/groceryi

我试图在django视图中使用elaphe生成二维码。这在开发服务器中可以正常工作,但在与开发在同一台机器上的apache2和mod_wsgi上运行的生产环境中失败。看起来是某种鬼脚本错误。我猜与路径环境有关,gs安装在/usr/local/bin中

错误 异常类型:IOError 异常值: [Errno 32]管道破裂

/条形码img中的usr/local/web/django/www/production/recipemonkey/recipemonkeyapp/views/groceryitem.py

img.saveresponse,“PNG”。。。 /保存中的usr/local/web/django/www/production/env/recipemonkey/lib/python2.7/site-packages/PIL/Image.py

自动加载。。。 /加载中的usr/local/web/django/www/production/env/recipemonkey/lib/python2.7/site-packages/PIL/EpsImagePlugin.py

self.im=Ghostscriptself.tile、self.size、self.fp。。。 /Ghostscript中的usr/local/web/django/www/production/env/recipemonkey/lib/python2.7/site-packages/PIL/EpsImagePlugin.py

gs写道。。。 密码 def条形码请求,id:

try:
    i = GroceryItem.objects.get(pk=id)
except GroceryItem.DoesNotExist:
    raise Http404

response=HttpResponse(content_type='image/png')

url="http://%s/recipemonkeyapp/scan/groceryitem/%s" % ('192.168.0.8:8082',i.id)

img=barcode('qrcode',url,options=dict(version=9, eclevel='M'), margin=0, data_mode='8bits')   # Generates PIL.EpsImageFile instance

img=img.resize((90,90)) #both these lines generate IOErrors

img.save(response, 'PNG') #both these lines generate IOErrors

return response

确保要保存的文件使用绝对路径。Apache下的当前工作目录可以是任何内容。还要确保保存到的目录文件可写给用户,代码在Apache下运行。

通过符号链接修复。显然是路径问题或对gs二进制文件的硬编码引用

sudo ln -s /usr/local/bin/gs /usr/bin/gs

为了澄清,我将图像返回给django响应对象。在不知道这是如何工作的确切细节的情况下,我认为实际上没有任何写作发生在记忆之外。例如,如果我改为调用img.resizex,y我遇到了与调用ghostscript库的PIL对象而不是文件权限相关的相同错误。您是否通常使用在主帐户中设置任何用户环境变量,以告知ghostscript工具/库在development server下运行时的内容所在位置?否/usr/local/bin在我的系统路径中,但就这样。