Snow Leopard下Python 2.6使用PIL的问题
我安装了libjpeg和PIL,但是当我尝试保存一张JPG图片时,总是出现这个错误:
导入错误:_imaging C模块没有安装
希望能得到一些帮助!
我试着在Python解释器中导入_imaging,想看看哪里出问题了,结果得到了这个:
>>> import _imaging
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PIL/_imaging.so
Expected in: dynamic lookup
4 个回答
2
编辑:感谢你提供的错误信息。看起来这是在Snow Leopard系统上jpeglib出现的问题。你试过这个方法吗?
http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/
4
很多错误是在你从源代码编译的时候出现的,尤其是当你之前通过fink或ports安装过python工具时。例如,_jpeg_resync_to_restart
这个错误可能是因为你在/opt/local/lib
目录下还有残留的libjpeg文件。你可以试试这个方法:
cd /opt/local/lib
sudo rm *jpeg*
然后重新编译libjpeg(先用make clean
清理一下),接着重新编译PIL(先用rm -Rf build
删除旧的构建文件)。
这样之后,import _imaging
应该就能正常工作了。对我来说是这样。
4
我在SL上也遇到了这个问题,可能是因为你的libjpeg库是用不匹配的架构构建的。假设你在使用MacPorts,可以运行 file /opt/local/lib/libjpeg.dylib
来检查一下。正确的做法是用MacPorts构建所有东西时加上 +universal
选项,具体可以参考这个链接:MacPorts中的通用二进制文件,这和PIL的依赖关系有关。