#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. Спасибо за ваши усилия! Единственный полезный ответ, который решил проблему.