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

#python #windows #python-imaging-library #activestate #activepython

#python #Windows #python-imaging-library #activestate #activepython

Вопрос:

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

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

Ошибка кода с
Ошибка IO: декодер zip недоступен

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

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

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

Ответ №1:

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

Комментарии:

1. Спасибо, я использовал упомянутую вами двоичную сборку, и теперь она работает.

2. Эта двоичная сборка была именно тем, что мне было нужно. Спасибо!

Ответ №2:

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

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

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

 ZLIB_ROOT = './zlib'
  

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

Перейдите в каталог исходного кода 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»
Скомпилируйте Pillow с помощью "python setup.py build_ext -i"
Установите Pillow с помощью "python setup.py install"

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

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

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

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

Комментарии:

1. Спасибо за ваши усилия! Единственный полезный ответ, который решил проблему.