Windows 7 上的 pil png activestate ZLIB (PNG/ZIP) 支持不可用

发布于 2024-12-07 09:14:29 字数 432 浏览 2 评论 0原文

我正在尝试将 python 程序从 OS X 移植到 Windows 7。 该程序使用 tkinter 处理 png 例如

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

代码失败 IOError:解码器 zip 不可用

我尝试使用 pypm 安装 pip。 然后我尝试用 pip 构建它。 在构建过程结束时,它报告不支持 png/zlib

我在 Windows 上安装 python.org 时遇到相同的错误。

我陷入困境,而且我不擅长构建 C 库。我也不知道 pip 是如何工作的。我安装了 gnu zlib 库,但它根本没有帮助。我安装了 Visual C++ 2008 Express,至少它可以工作,因为 pip 确实成功编译了东西。

I'm trying to port a python program from OS X to Windows 7.
This program processes a png with tkinter
eg

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

The code is failing with
IOError: decoder zip not available

I've tried installing pip with pypm.
Then I try building it with pip.
At the end of the build process it reports that there is no support for png/zlib

I get the same errors with the python.org installation on Windows.

I'm stuck and I'm not skilled at building C libraries. Neither do I know how pip works. I have a gnu zlib library installed but it's not helping at all. I have Visual C++ 2008 Express installed, and at least that's working because pip does compile things successfully.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

污味仙女 2024-12-14 09:14:29

尝试此处由 Christoph Gohlke 维护的构建。要自己构建 PIL,您需要自述文件中提到的几个库:libjpeg、zlib、freetype2 和 littleCMS。请阅读 zlib125-dll.zip 中的 USAGE.txt,了解有关使用 Visual C++ 或 MinGW 链接到 zlib 的说明。

Try the build here that's maintained by Christoph Gohlke. To build PIL yourself you need several libraries as mentioned in the README: libjpeg, zlib, freetype2, and littleCMS. Read USAGE.txt in zlib125-dll.zip for instructions on linking to zlib with Visual C++ or MinGW.

单挑你×的.吻 2024-12-14 09:14:29

我知道这是一个老问题,但我想给出我的答案,以防人们遇到与我相同的问题。

Christoph Gohlke 的构建在工作时非常棒。
然而,对于我的带有 python 2.7 且最重要的是 64 位的 win7 机器,没有具有 PNG 支持(zlib 支持)的预编译二进制文件。该页面上的 Pillow 64 位二进制文​​件在 easy_install 上失败,无法安装在我的计算机上。

因此,如果您想解决这个问题并且二进制文件不起作用,您需要使用 zlib 支持自行构建 Pillow。为此,您需要下载最新的 Pillow 源代码。
修改 setup.py 中的 ZLIB_ROOT 行:

ZLIB_ROOT = './zlib'

现在您还必须为 win64 位构建 zlib,这是棘手的部分。
从他们的网站下载最新的 zlib 源代码(我在 1.2.5/1.2.8 上测试过)。
打开 64 位的 Visual Studio 命令提示符(非常重要)
我的命令提示符称为 VS2012 x64 交叉工具命令提示符。

转到 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”的目录中
使用 "python setup.py build_ext -i" 编译 Pillow
使用 "python setup.py install" 安装 Pillow

Pillow 现在应该支持 ZLIB (png)。
如果您安装了一些较旧的 Pillow/PIL,则可能需要手动将 _imaging.pyd 和 _imagingmath.pyd 复制到 python 或虚拟环境的包安装文件夹中,以确保您拥有新编译的文件。

您现在可以导入 _imaging 并且拥有 png 支持。

如果需要,您还可以以相同的方式添加 Libjpeg,手动编译它。

希望这对遇到此问题的任何人都有帮助。

I know this is an old question, but I wanted to give my answer in case people run into the same problem as me.

The builds by Christoph Gohlke are awesome, when they work.
However for my win7 machine with python 2.7 and most importantly 64bit, there is no precompiled binary with PNG support (zlib support). The Pillow 64bit Binary on that page fails on easy_install and can't be installed on my machine.

So if you want to solve this and the binary doesn't work you need to build Pillow your self with zlib support. To do this you need to download the latest Pillow source.
Modify in setup.py the ZLIB_ROOT line to say:

ZLIB_ROOT = './zlib'

Now you have to build zlib for win64 bit as well, that's the tricky part.
Download latest zlib source from their site (I tested on 1.2.5/1.2.8).
Open visual studio command prompt for 64 bit (VERY IMPORTANT)
My command prompt was called VS2012 x64 Cross Tools Command Prompt.

Go to the zlib source dir and run:

nmake -f win32/Makefile.msc

If it doesnt work try:

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

Now you should have in the source directory the following files:

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

Copy them into the Pillow source directory, into a directory called "zlib"
Compile Pillow using "python setup.py build_ext -i"
Install Pillow using "python setup.py install"

Pillow should now work with ZLIB (png) support.
If you have some older Pillow/PIL installations, you might need to manually copy the _imaging.pyd and _imagingmath.pyd to the package installation folder of your python or virtual environment, to make sure you have the newly compiled ones.

You can now import _imaging and you have png support.

You can also add Libjpeg in the same way, compiling it manually, if needed.

Hope this helps anyone that encounters this problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文