在Snow Leopard上安装Python 2.6.5的PIL问题
我快要崩溃了。我安装了一个可以用的 Python 2.6.5,里面有 numpy 和 scipy。我想用它来做一些简单的主成分分析(PCA),这需要导入图片。我觉得用 PIL(Python Imaging Library)是个不错的选择。于是,我按照一个指南下载并安装了 libjpeg6-b。接着,我执行了以下命令:
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
./configure --enable-shared --enable-static
make
我切换到下载 PIL 1.1.7 的目录,然后做了以下操作:
tar zxvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
(edit the setup.py file to find libjpeg)
python setup.py build
python setup.py install
然后我尝试导入 _imaging,但出现了著名的 ImportError 错误,提示信息是:dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL-1.1.7-py2.6-macosx-10.3-fat.egg/_imaging.so, 2): 找不到符号: _jpeg_resync_to_restart 引用自: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL-1.1.7-py2.6-macosx-10.3-fat.egg/_imaging.so 在: 动态查找错误。
我尝试了网上大多数的解决方案,但都没有成功。我在将我的架构限制为 i386 后,运行了 otool 命令查看我的 _imaging.so,结果是:
Thomas$ otool -L /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/_imaging.so
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/_imaging.so:
/usr/lib/libSystem.B.dylib (兼容版本 1.0.0,当前版本 125.2.0)
此外,当我运行 pip 时,得到了这个输出:
--------------------------------------------------------------------
PIL 1.1.6 BUILD SUMMARY
--------------------------------------------------------------------
version 1.1.6
platform darwin 2.6.5 (r265:79359, Mar 24 2010, 01:32:55)
[GCC 4.0.1 (Apple Inc. build 5493)]
--------------------------------------------------------------------
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--------------------------------------------------------------------
To check the build, run the selftest.py script.
关于 PIL 1.1.6 的。
我还尝试切换到 gcc 4.0,并重新编译了 libjpeg 和 PIL。
如果能得到任何帮助,我将非常感激。如果你需要更多信息,请随时问我。
2 个回答
你知道Macports(或者Fink)吗?安装软件和程序包最简单的方法就是用Macports。或者你也可以看看Macports的Portfiles,了解他们是怎么编译那些库的。
你也可以用pip来安装图像处理库。
可以先用easy_install来安装pip。
easy_install pip
pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
如果这样还是不行,我写了一篇文章,讲的是如何让PIL、libjpeg和_imaging在Python 2.6和Snow Leopard系统上运行。
http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/