2010-07-11 65 views
3

我试图在Snow Leopard上安装PIL,使用Python 2.6.1,GCC 4.2.1,PIL 1.1.7,并尝试使用libjpeg6b和libjpeg7 - 没有任何东西作品。我已经从fink中清除了libjpeg/pil/zlib的所有踪迹,尝试了各种编译器选项等,并且使用了http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/和http:// www.brambraakman.com/blog/comments/installing_pil_in_snow_leopard_jpeg_resync_to_restart_error/(不是链接,因为仅适用于StOv让我发布一个......)在雪豹上安装PIL - 没有作品

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.7 me$ python selftest.py 
Traceback (most recent call last): 
    File "selftest.py", line 11, in <module> 
    from PIL import ImageMath 
    File "./PIL/ImageMath.py", line 19, in <module> 
    import _imagingmath 
ImportError: No module named _imagingmath 

只要不是selftest.py失败,因为_imaging

>>> 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 

请帮助!这太荒谬了。我甚至很乐意能够在这一点上编译PIL sans jpeg支持!

回答

1

下载macport:

http://www.macports.org/install.php 

然后用它来PIL:

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

我也有很多的这种麻烦,但端口管理。

+0

我应该删除我已经安装了的libjpeg/PIL的副本? – 2010-07-11 21:23:40

+0

暂停,macports是否想要安装它自己的Python,还是将它与系统之间的良好? – 2010-07-11 21:25:12

+0

当我运行它时,我已经安装了较新的python,所以我不完全确定。它可能需要重新安装一些fink已有的东西,我从来没有联合使用过这两个。 – eruciform 2010-07-11 21:32:26

0

当我尝试安装PIL时,我总是得到几个屏幕值得的gcc错误。在某些时候,我得到了一些工作(也许通过MacPorts),所以现在我的解决方案是将其复制到适当的站点包(例如在新的virtualenv中)。

我刚刚张贴在这里:http://blogmaker.com/PIL-1.1.6-for-MacOSX-10.5-Leopard.zip

对我的作品;我不知道它是否会为其他人工作!随时与我联系的建议。而且,让我知道我是否应该发布一个更好的地方。 PIL既非常酷,也非常麻烦;有一个明确的支持地点将是很好的。还有其他PIL相关的问题,我从来没有解决。

+0

通过搜索找到本文的人的更新:还有一个称为Pillow的PIL叉,旨在更容易安装。请参阅http://pypi.python.org/pypi/Pillow/(我还没有测试过,但下次我必须安装。) – 2012-10-13 03:13:15

5

我最近写了一篇关于如何让PIL,Django的文章,libjpeg的并肩雪豹

http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

的工作很好,我会在这里复制了你。

如果你没有这个下载它首先。

http://www.ijg.org/files/jpegsrc.v7.tar.gz

进入你的shell环境,并解压运行以下

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

然后运行

sudo make clean
sudo CC="gcc -arch i386”"./configure --enable-shared --enable-static
sudo make
sudo make install

下得到PIL,然后解压

http://effbot.org/downloads/Imaging-1.1.6.tar.gz
tar -zxvf Imaging-1.1.6.tar.gz
cd Imaging-1.1.6

如果你已经有PIL我会回忆修改运行

sudo rm -Rf build

清理任何现有的构建,这已经导致我的错误和灰色毛发大量!

在settings.py文件运行

找到JPEG_ROOT

,所以它看起来的libjpeg如果安装成功,你应该如下

JPEG_ROOT = libinclude(“/usr/local”)

下一个动作到造形

sudo python setup.py build

修改它能够运行python selftest.py,没有任何与“jpeg”有关的错误

sudo python setup.py install

如果一切很顺利,你应该能够在命令行中执行Python输入你的Python解释器,并执行以下操作:

import PIL
import Image
import _imaging

没有任何错误。

只是三重检查我的桌面上有一个简单的jpeg。

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

应不会出现错误的工作

+1

+11111 !!!遵循上面的说明(注意先消除先前存在的libjpeg安装)是许多故障后最终成功的解决方案。对于其他人,我在运行selftest时也得到了'ImportError:No module named _imagingmath'。py,但它似乎并不重要,因为最后我可以导入_imaging'而不会出现_jpeg_resync_to_restart错误 – Anentropic 2012-02-29 20:47:18

+0

argh,不!我仍然得到'IOError:解码器jpeg不可用'......撕裂我的头发! – Anentropic 2012-02-29 20:51:46

+1

啊是的!我忘了在libjpeg上执行'sudo make install'命令,从头开始重新启动,现在它确实可以工作。恢复理智! – Anentropic 2012-02-29 21:04:16