2011-10-24 33 views
3

Im在本地mac上使用sorl.thumbnail作为本地django,并且一直在PIL中遇到麻烦,但是今天终于设法让它安装 - 在libjpeg中遇到了一些麻烦。Django OS X错误的JPEG库版本:库是80,调用者期望62 sorl.thumbnail

我现在可以上传和使用图像 - 但我不能使用sorl.thumbnail调整它们的大小。

当我尝试,我得到以下错误:

Wrong JPEG library version: library is 80, caller expects 62 

有谁知道这是一个很好的解决方案。

我不知道无论使用何种软件,都需要使用libjpeg的早期版本,或者使用各种方法进行所有尝试后仍会留下一些鬼装。

我:

  1. PIL 1.1.7
  2. 的libjpeg 8

任何人都知道的方法?

回答

0

如果您已经安装使用MacPorts,你应该做:

$ sudo port selfupdate 
$ sudo port install py27-pil 

这是从1995年起的MacPorts安装正确的依赖关系的easy_install方法更容易。

+0

感谢您的答复 - 我明白了 - 没有真正的想法我做了什么,但现在它的工作......有点。虽然我很乐意将此标记为一个很好的答案,但我不会尝试使用我的*完美*安装的风险 - 但再次感谢! - 也许它会帮助别人 – niklasdstrom

7

为了未来的人们遇到这个错误,不知道为什么,我想发布我的发现。我希望大致了解发生了什么问题,因为修复它的确切命令在您的计算机上可能会不同于我的OSX Lion安装。

首先,因为它很容易迷失在可能的解决方案,了解该错误信息是正确的,当它说:Wrong JPEG library version: library is 80, caller expects 6262其他一些组合,70,并80是非常重要的。这些数字对应于libjpeg的不兼容版本。这里有两个移动块,动态加载的jpeg库和PIL(或Pillow)安装。错误信息的意思是你的PIL安装是用libjpeg6.2的头文件编译的,但是当它加载实际的共享库时,它被链接到版本8.0。

解决方法是download,建造和安装所需的libjpeg的版本(任何会做,但后来的版本上OSX狮子打造更容易):

wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz 
tar xzf jpegsrc* 
cd jpeg-* 
./configure 
make 
sudo make install 

这应该放弃注2个文件'在/ usr /本地/'。即/usr/local/lib/libjpeg.8.dylib/usr/local/include/jpeglib.h。现在我们只需要让PIL(或Pillow)在安装时使用这两个文件,而且我们是免费的。我知道有一个更好的方法可以做到这一点,但黑客(如PIL文档所建议的)是在安装之前编辑PIL分配的setup.py文件。您可能会在setup.py的顶部附近设置JPEG_ROOT = libinclude('/usr/local'),但在文件的其他位置可能需要进一步的目录操作。

当你摆弄这些路径时,你必须确保PIL在测试它是否连接到正确的库之前完成重建。我使用了一个像rm -rf build && python setup.py install这样的命令来确保库总是与我正在测试的当前路径刚刚链接。

对不起,这是一个漫无边际的答案,但它是非常令人沮丧的尝试了所有其他副本&粘贴解决方案,并没有他们的工作。希望这个答案能够让至少几个人在浪费大量时间寻找简单的解决方案。

祝你好运!

0

我有一个比OP稍微不同的问题,但我想分享我的解决方案在这里帮助未来的人。

操作系统:OSX El Capitan 我在其网站上的预编译二进制文件中安装了libjpeg-turbo。但是,我不知道我的Mac上已经安装了不同版本的libjpeg。我正在构建像这样的gcc myfile.c -o myfile.out -L /opt/libjpeg-turbo/lib -ljpeg的c文件。这从正确的位置获得了库,但链接器从预安装的位置获取了包含的头文件jpeglib.h。我改变了我的构建命令:gcc myfile.c -o myfile.out -I/opt/libjpeg-turbo/include/ -L /opt/libjpeg-turbo/lib -ljpeg,它的工作。没有更多的图书馆是80,来电者预计62!