Python 在雪豹上安装PIL——没有任何效果

Python 在雪豹上安装PIL——没有任何效果,python,gcc,osx-snow-leopard,python-imaging-library,libjpeg,Python,Gcc,Osx Snow Leopard,Python Imaging Library,Libjpeg,我正在尝试使用Python2.6.1、GCC4.2.1、PIL1.1.7在SnowLeopard上安装PIL,并尝试了libjpeg6b和libjpeg7——没有任何效果。我已经从fink中清除了libjpeg/pil/zlib的所有痕迹,尝试了各种编译器选项等,并使用和http://www.brambrakman.com/blog/comments/installation_pil_in_snow_leopard_jpeg_resync_to_restart_error/(不是一个链接,因为S

我正在尝试使用Python2.6.1、GCC4.2.1、PIL1.1.7在SnowLeopard上安装PIL,并尝试了libjpeg6b和libjpeg7——没有任何效果。我已经从fink中清除了libjpeg/pil/zlib的所有痕迹,尝试了各种编译器选项等,并使用和http://www.brambrakman.com/blog/comments/installation_pil_in_snow_leopard_jpeg_resync_to_restart_error/(不是一个链接,因为StOv只允许我发布一个…)

4位可能有用的信息:

OTOOL不将libjpeg显示为依赖项

otool -L /Library/Python/2.6/site-packages/PIL/_imaging.so
/Library/Python/2.6/site-packages/PIL/_imaging.so:
 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
我收到这些奇怪的编译信息

i686-apple-darwin10-gcc-4.2.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.2.1: Tcl: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.2.1: -framework: linker input file unused because linking not done
i686-apple-darwin10-gcc-4.2.1: Tk: linker input file unused because linking not done
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/sw/include/freetype2 -I/sw/include -I/opt/local/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include -I/usr/local/include -I/usr/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c Tk/tkImaging.c -o build/temp.macosx-10.6-universal-2.6/Tk/tkImaging.o -framework Tcl -framework Tk
In file included from /System/Library/Frameworks/Tk.framework/Headers/tk.h:78,
                 from Tk/tkImaging.c:51:
selftest.py因_imagingmath而失败(在我使用上面给出的第二个链接之后,在它因_imaging而失败之前)

Themistocles:Imaging-1.1.7ME$python selftest.py
回溯(最近一次呼叫最后一次):
文件“selftest.py”,第11行,在
从PIL导入ImageMath
文件“/PIL/ImageMath.py”,第19行,在
导入图像路径
导入错误:没有名为_imagingmath的模块
除了selftest.py之外的任何东西都会因_成像而失败

>>> import _imaging
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.6/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
  Referenced from: /Library/Python/2.6/site-packages/PIL/_imaging.so
  Expected in: flat namespace
 in /Library/Python/2.6/site-packages/PIL/_imaging.so
导入图像 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:dlopen(/Library/Python/2.6/site-packages/PIL//\u imaging.so,2):未找到符号:\u jpeg\u重新同步\u至\u重新启动 参考自:/Library/Python/2.6/site-packages/PIL//u imaging.so 应为:平面命名空间 在/Library/Python/2.6/site-packages/PIL//u imaging.so中 求求你,求求你帮帮我!这太荒谬了。我甚至很高兴能够在这一点上编译PIL sans jpeg支持

下载macport:

http://www.macports.org/install.php
然后将其用于pil:

http://trac.macports.org/browser/trunk/dports/python/py-pil/Portfile

我在这方面也遇到了很多麻烦,但是端口是管理的。

在尝试安装PIL时,我总是遇到几个屏幕上的gcc错误。在某种程度上,我得到了一些有用的东西(可能是通过MacPorts),所以现在我的解决方案是将其复制到适当的站点包中(例如,在新的virtualenv中)

我刚把它贴在这里:


为我工作;我不知道它是否对其他人有效!请随时与我联系并提出建议。还有,如果有更好的地方,请告诉我。PIL既很酷又很麻烦;如果能有一个明确的支持场所就好了。还有其他与PIL相关的问题我从未解决。

我最近写了一篇文章,介绍如何让PIL、django、libjpeg与Snow Leopard一起很好地工作

我也会把它复制到这里

如果你没有这个,先下载它

进入shell环境并通过运行以下命令来卸载

tar-zxvf jpegsrc.v7.tar.gz
cd jpeg-7

然后跑

sudo使干净
sudo CC=“gcc-arch i386”。/configure--enable shared--enable static
sudo make
sudo制作安装

下一步获取PIL并将其解压


tar-zxvf成像-1.1.6.tar.gz
cd成像-1.1.6

如果你已经有PIL,我建议你跑步

sudorm-Rf构建

为了清理任何现有的构建,这会导致大量错误和灰色头发

在settings.py文件中,运行find JPEG\u ROOT

修改它,使其看起来如下

JPEG_ROOT=libinclude(“/usr/local”)

下一步是构建

sudo python setup.py build

如果libjpeg安装成功,您应该能够运行python selftest.py,而不会出现与“jpeg”相关的任何错误

sudo python setup.py安装

如果所有操作都成功,您应该能够通过在命令行中执行python进入python解释器,并执行以下操作:

导入PIL
导入图像
导入图像

没有任何错误

我的桌面上有一个简单的jpeg

image=image.open(“/Users/MyName/Desktop/myimage.jpeg”)
image.save(“/Users/MyName/Desktop/test.jpeg”)


应该可以正常工作吗?

我应该删除已安装的libjpeg/PIL的副本吗?等等,macports是想安装自己的Python,还是可以与system one配合使用?我在运行时已经安装了一个更新的Python,所以我不完全确定。它可能想重新安装fink已经拥有的一些东西,我从来没有将它们结合使用过。@Harkonnen:MacPorts将希望安装自己的python-python 2.4!如果您试图让它与系统的Python一起工作,您可以尝试手动将其复制到Python的site packages目录(不确定这是否适用于您的情况),或者您可以查看端口文件内部,看看他们是否制作了任何补丁来构建它。它还应该给你一个想法,什么版本的libjpeg拍摄。Macports坚持安装自己的Python,我真的不想…有办法吗?+11111!!!遵循上面的说明(注意首先删除预先存在的libjpeg安装)是我在多次失败后的最终成功解决方案。对于其他人,我在运行selftest.py时也得到了
导入错误:没有名为_imagingmath
的模块,但这似乎并不重要,因为我终于可以
导入_imaging
而无需_jpeg\u resync\u to\u restart errorargh,不!我仍然收到
IOError:解码器jpeg不可用
…把我的头发撕下来!啊,是的!我忘了在libjpeg上执行
sudomakeinstall
命令,从头开始,现在真的可以工作了。恢复理智!现在它抱怨
libz
。我通过在setup.py上禁用行
libs.append(feature.zlib)
defs.append((“HAVE_LIBZ”,None))
来解决这个问题。太悲哀了。通过搜索找到这篇文章的人更新:还有一个叫做枕头的PIL叉子,旨在更容易安装。请参阅(我尚未测试它,但下次必须安装时将进行测试。)
http://trac.macports.org/browser/trunk/dports/python/py-pil/Portfile