पर काम करता है मैं matplotlib द्वारा उत्पादित चार्ट मुद्रित करने के लिए ReportLab का उपयोग कर रहा हूं।IOError: लिनक्स पर ReportLab में matplotlib पीएनजी का उपयोग करके "डिकोडर ज़िप उपलब्ध नहीं है", विंडोज
मैं बिना किसी परेशानी के अपने विंडोज़ विकास मशीन पर ऐसा करने में सक्षम हूं। जब मैं उबंटू सर्वर पर तैनात करता हूं, हालांकि, प्रतिपादन त्रुटि के साथ विफल रहता है। मुझे लगता है कि मुझे पाइथन मॉड्यूल याद आ रहा है, लेकिन मुझे नहीं पता कि कौन सा है। मेरा मानना है कि पायथन, मैटलप्लिब, रिपोर्टलैब और पीआईएल के संस्करण मेरी विकास मशीन और सर्वर दोनों पर समान हैं।
कोड PNG में matplotlib आंकड़ा (बुलाया चार्ट) को परिवर्तित करने और इसे वापस करने के लिए:
res_img = charts.CreateProjectionChart(doc.fund) #calls above code
if res_img:
img = ImageReader(res_img)
canvas.drawImage(img, FromLeft(first_col), FromTop(3.5, 2), width - (.1 * inch), 1.75 * inch, preserveAspectRatio=True, anchor='c')
जब Windows पर चलाने के लिए, यह काम करता है:
img_stream = StringIO.StringIO()
chart.savefig(img_stream, format = 'png')
img_stream.seek(0)
return img_stream
कोड छवि का उपयोग करने के लिए। जब लिनक्स पर चलने यह इस त्रुटि पैदा करता है:
File "/home/web-server/reports.py", line 913, in FirstPageSetup
canvas.drawImage(img, FromLeft(first_col), FromTop(3.5, 2), width - (.1 * inch), 1.75 * inch, preserveAspectRatio=True, anchor='c')
File "/usr/local/lib/python2.7/dist-packages/reportlab-2.5-py2.7-linux-x86_64.egg/reportlab/pdfgen/canvas.py", line 840, in drawImage
rawdata = image.getRGBData()
File "/usr/local/lib/python2.7/dist-packages/reportlab-2.5-py2.7-linux-x86_64.egg/reportlab/lib/utils.py", line 658, in getRGBData
annotateException('\nidentity=%s'%self.identity())
File "/usr/local/lib/python2.7/dist-packages/reportlab-2.5-py2.7-linux-x86_64.egg/reportlab/lib/utils.py", line 648, in getRGBData
if Image.VERSION.startswith('1.1.7'): im.load()
File "/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ImageFile.py", line 189, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/Image.py", line 385, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available
identity=[[email protected]]
handle_pageBegin args=()
यह आप zlib मॉड्यूल याद कर रहे हैं लगता है ले लो। यहां एक नज़र डालें http://www.foxhop.net/ubuntu-python-easy_install-pil-does-not-install-zlib-support – RanRag
क्या आपने पीआईएल को स्वयं संकलित किया था? या पीआईएल 'एपीटी' द्वारा प्रबंधित है? – sarnold
@ कर्नाल्ड: मेरा मानना है कि पीआईएल रिपोर्टलाब द्वारा स्थापित किया गया था। किसी भी घटना में, मैंने इसे नहीं बनाया है, मुझे इसे किसी और चीज के हिस्से के रूप में या विंडोज़ पर easy_install के साथ मिला है और उबंटू पर उपयुक्त है। –