Django OS X错误的JPEG库版本:库是80,调用者期望62 sorl.thumbnail

nik*_*rom 3 libjpeg sorl-thumbnail python-imaging-library

我在我的Mac上使用本地django的sorl.thumbnail并且一直遇到PIL问题,但今天我终于设法安装了它 - 与libjpeg有些麻烦.

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

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

Wrong JPEG library version: library is 80, caller expects 62
Run Code Online (Sandbox Code Playgroud)

有谁知道一个很好的解决方案.

我不知道无论sorl使用什么都需要早期版本的libjpeg或者还有一些幽灵安装的东西仍然留在我的所有尝试用各种方法.

我有 :

  1. PIL 1.1.7
  2. libjpeg 8.

有谁知道一种方法?

Don*_*ing 7

为了未来遇到这个错误并且不知道原因的人们的利益,我想发表我的发现.我希望能够大致了解出现了什么问题,因为修复它的确切命令在您的计算机上可能与我的OSX Lion安装上的不同.

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

修复是下载,构建和安装你想要的libjpeg版本(任何人都会这样做,尽管后来的版本在OSX Lion上更容易构建):

 wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz
 tar xzf jpegsrc*
 cd jpeg-*
 ./configure
 make
 sudo make install
Run Code Online (Sandbox Code Playgroud)

这应该删除'/ usr/local /'中的2个注释文件.即/usr/local/lib/libjpeg.8.dylib/usr/local/include/jpeglib.h.现在我们只需要让PIL(或Pillow)在安装时使用这两个文件,我们就可以免费回家了.我知道有更好的方法可以做到这一点,但是黑客(根据PIL文档的建议)是setup.py在安装之前编辑PIL发行版的文件.您可能只是设置JPEG_ROOT = libinclude('/usr/local')在顶部附近setup.py,但在文件的其他地方可能需要进一步的目录操作.

当您调整路径时,您必须确保PIL在测试它是否链接到正确的库之前进行完全重建.我使用了一个命令rm -rf build && python setup.py install,以确保库始终与我正在测试的当前路径新关联.

对不起,这是一个漫无边际的答案,但是在那里尝试了所有其他的复制和粘贴解决方案并且没有一个能够正常工作是非常令人沮丧的.希望这个答案至少让一些人浪费大量时间寻找简单的解决方案.

祝好运!