pil png activestate на windows 7 Поддержка ZLIB (PNG / ZIP) недоступна - PullRequest
2 голосов
/ 01 октября 2011

Я пытаюсь портировать программу на Python с OS X на Windows 7. Эта программа обрабатывает png с помощью tkinter например,

self.logoImg = ImageTk.PhotoImage(Image.open('GrowthPathLogo.png'))

Код не работает с IOError: декодер zip недоступен

Я пытался установить pip с помощью pypm. Затем я пытаюсь построить его с помощью пипа. В конце процесса сборки сообщается, что png / zlib

не поддерживается

Я получаю те же ошибки при установке python.org в Windows.

Я застрял и не умею создавать библиотеки на Си. Я также не знаю, как работает пипс. У меня установлена ​​библиотека gnu zlib, но она совсем не помогает. У меня установлен Visual C ++ 2008 Express, и по крайней мере это работает, потому что pip успешно компилирует вещи.

Ответы [ 2 ]

7 голосов
/ 01 октября 2011

Попробуйте сборку здесь , которую поддерживает Кристоф Гольке.Чтобы создать PIL самостоятельно, вам нужно несколько библиотек, как указано в README: libjpeg, zlib, freetype2 и littleCMS.Прочтите USAGE.txt в zlib125-dll.zip для получения инструкций по связыванию с zlib с помощью Visual C ++ или MinGW.

5 голосов
/ 19 июня 2013

Я знаю, что это старый вопрос, но я хотел дать свой ответ на тот случай, если люди столкнутся с той же проблемой, что и я.

Сборки Кристофа Гольке потрясающие, когда они работают.Однако для моей машины win7 с python 2.7 и, что наиболее важно, 64-битным, нет предварительно скомпилированного двоичного файла с поддержкой PNG (поддержка zlib).64-разрядный двоичный файл Pillow на этой странице не запускается при установке easy_install и не может быть установлен на моем компьютере.

Так что, если вы хотите решить эту проблему, а двоичный файл не работает, вам нужно создать собственную подушку с поддержкой zlib.,Для этого вам нужно скачать последнюю версию Подушки.Измените в файле setup.py строку ZLIB_ROOT, указав:

ZLIB_ROOT = './zlib'

Теперь вам также нужно собрать zlib для win64 bit, это сложная часть.Загрузите последний источник zlib с их сайта (я тестировал 1.2.5 / 1.2.8).Откройте командную строку для 64-разрядной Visual Studio (ОЧЕНЬ ВАЖНО). Моя командная строка называлась Командная строка Cross Tools для VS64 x64.

Перейдите в директорию zlib source и запустите:

nmake -f win32/Makefile.msc

Еслине работает try:

nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF" OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"

Теперь у вас должны быть в исходном каталоге следующие файлы:

zlib.h
zconf.h
zutil.h (not sure this is needed)
zlib.lib
zdll.lib

Скопируйте их в исходный каталог Pillow, в каталог с именем "zlib" CompileПодушка с помощью "python setup.py build_ext -i" Установите подушку с помощью "python setup.py install"

Подушка теперь должна работать с поддержкой ZLIB (png).Если у вас есть более старые установки Pillow / PIL, вам может потребоваться вручную скопировать _imaging.pyd и _imagingmath.pyd в папку установки пакета вашего python или виртуальной среды, чтобы убедиться, что у вас есть только что скомпилированные.

Теперь вы можете импортировать _imaging и иметь поддержку png.

Вы также можете добавить Libjpeg таким же образом, компилируя его вручную, если это необходимо.

Надеюсь, что это поможет любому, кто столкнулся с этой проблемой.

...