pil png activestate на windows 7 Поддержка ZLIB (PNG/ZIP) недоступна

Я пытаюсь портировать программу на 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 ответа

Решение

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

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

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

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

ZLIB_ROOT = './zlib'

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

Перейдите к исходному каталогу zlib и запустите:

nmake -f win32/Makefile.msc

Если это не работает, попробуйте:

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 Pillow, используя "python setup.py build_ext -i"Установите подушку, используя "python setup.py install"

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

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

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

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

Другие вопросы по тегам