Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 22, 2012 17:24:40

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

IOError: encoder zip not available

Помогите плиз. Написал приложение, на домашнем сервере (CenOS 6.3) работает, а вот на хостинге после переноса туда не хочет. Методом проб и ошибок нашел, что дело в библиотеке PIL (1.1.7), версия питона на хостинге 2.7.3. Чтобы разобраться, загружал питон в ssh и выполнял команды пошагово. В итоге не хочет записывать изображение в файл и читать из файла, как только дело доходит до чтения/записи, выдаёт такую ошибку:

IOError: encoder zip not available
Вместо файла пробовал использовать и StringIO, в итоге то же самое.

Если говорить более подробно, то пошагово выполняю следующий фрагмент кода:
import PIL
import qrcode
import StringIO
#......
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data('Some data')
qr.make(fit=True)
img = qr.make_image()
failo = StringIO.StringIO()
img.save(failo,"PNG")

Вот после последней команды вылетает следующее:

>>> img.save(failo,“PNG”)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/home/username/python/lib/python2.7/site-packages/qrcode/image/pil.py”, line 34, in save
self._img.save(stream, kind)
File “/home/username/python/lib/python2.7/site-packages/PIL/Image.py”, line 1439, in save
save_handler(self, fp, filename)
File “/home/username/python/lib/python2.7/site-packages/PIL/PngImagePlugin.py”, line 572, in _save
ImageFile._save(im, _idat(fp, chunk), )
File “/home/username/python/lib/python2.7/site-packages/PIL/ImageFile.py”, line 481, in _save
e = Image._getencoder(im.mode, e, a, im.encoderconfig)
File “/home/username/python/lib/python2.7/site-packages/PIL/Image.py”, line 401, in _getencoder
raise IOError(“encoder %s not available” % encoder_name)
IOError: encoder zip not available

Никак не разберусь, как избавиться от ошибки? С помощью гугла нашел много сообщений о подобной ошибке, предлагается пересобрать PIL с добавлением строки add_directory(library_dirs, “/usr/lib/i386-linux-gnu”) . Пересобрал PIL и установил, ничего не изменилось. У меня дело частично осложняется ещё и тем, что имеет место виртуальный хостинг, а не виртуальный сервер, т.е. нет доступа root и имеются определённые ограничения. Тем не менее питон работает и Django тоже.

Отредактировано digi (Сен. 22, 2012 22:39:43)

Офлайн

#2 Сен. 22, 2012 22:43:34

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

IOError: encoder zip not available

Что интересно, в формате GIF изображение сохраняет. Сейчас запустил самотест PIL из той папки, из которой устанавливал пакет

python selftest.py
вот что выдало
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from /home/username/python/lib/python2.7/site-packages/PIL
--------------------------------------------------------------------
*** PIL CORE support not installed
*** TKINTER support not installed
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
*** FREETYPE2 support not installed
*** LITTLECMS support not installed
--------------------------------------------------------------------
Running selftest:
*****************************************************************
Failure in example:
try:
 _info(Image.open(os.path.join(ROOT, "Images/lena.jpg")))
except IOError, v:
 print v
from line #24 of selftest.testimage
Expected: ('JPEG', 'RGB', (128, 128))
Got: decoder jpeg not available
1 items had failures:
   1 of  57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.
Чего не хватает ещё для полного счастья и как это сделать?

Офлайн

#3 Сен. 23, 2012 09:01:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

IOError: encoder zip not available

digi
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed



Офлайн

#4 Сен. 23, 2012 12:10:28

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

IOError: encoder zip not available

py.user.next, вот только не пойму, почему у меня в таком случае импорт модуля zlib выполняется беспроблемно?

import zlib
Или это требуется какая-то другая библиотека? Тогда подскажите, где взять недостающие для обработки jpeg и png библиотеки.

Офлайн

#5 Сен. 24, 2012 14:04:26

digi
Зарегистрирован: 2012-08-16
Сообщения: 32
Репутация: +  1  -
Профиль  

IOError: encoder zip not available

Всё-таки не понятно, ну ладно там zlib, а как же так PIL CORE не установлен? PIL в питоне импортируется, картинки рисует…

Офлайн

#6 Окт. 31, 2015 21:08:12

grigerik
Зарегистрирован: 2014-04-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

IOError: encoder zip not available

digi
Всё-таки не понятно, ну ладно там zlib, а как же так PIL CORE не установлен? PIL в питоне импортируется, картинки рисует…
сори за некропост, но выход найден?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version