Python imaging library Django OS X错误的JPEG库版本:库为80,调用方要求62 sorl.缩略图

Python imaging library Django OS X错误的JPEG库版本:库为80,调用方要求62 sorl.缩略图,python-imaging-library,libjpeg,sorl-thumbnail,Python Imaging Library,Libjpeg,Sorl Thumbnail,我在mac上本地使用django的sorl.thumbnail,在PIL上遇到了一些问题,但今天我终于成功安装了它——libjpeg遇到了一些问题 我现在可以上传和使用图片了,但是我不能用sorl.缩略图来调整它们的大小 当我尝试时,会出现以下错误: Wrong JPEG library version: library is 80, caller expects 62 有人知道解决这个问题的好办法吗 我不知道sorl使用的任何东西是否需要早期版本的libjpeg,或者是否有一些幽灵安装的东西

我在mac上本地使用django的sorl.thumbnail,在PIL上遇到了一些问题,但今天我终于成功安装了它——libjpeg遇到了一些问题

我现在可以上传和使用图片了,但是我不能用sorl.缩略图来调整它们的大小

当我尝试时,会出现以下错误:

Wrong JPEG library version: library is 80, caller expects 62
有人知道解决这个问题的好办法吗

我不知道sorl使用的任何东西是否需要早期版本的libjpeg,或者是否有一些幽灵安装的东西仍然留在我所有的尝试与各种方法

我有:

  • PIL 1.1.7
  • libjpeg 8

  • 有人知道方法吗?

    如果您安装了macports,您应该执行以下操作:

    $ sudo port selfupdate
    $ sudo port install py27-pil
    

    它比easy_install方法更简单,因为macports安装了正确的依赖项。

    为了将来遇到此错误且不知道原因的人们的利益,我想发布我的发现。我希望大致了解出了什么问题,因为在您的机器上修复它的确切命令可能与在我的OSX Lion安装上不同

    首先,由于很容易在潜在的解决方案中迷失方向,因此重要的是要理解,当错误消息说
    错误的JPEG库版本时,错误消息是正确的:库是80,调用方期望62
    62
    70
    80
    的其他组合。这些数字对应于libjpeg的不同不兼容版本。这里有两个移动部件,动态加载的jpeg库和PIL(或枕头)安装。错误消息的意思是,您的PIL安装是使用libjpeg版本6.2中的标题编译的,但是当它加载实际的共享库时,它被链接到版本8.0

    修复程序是创建、构建和安装所需的libjpeg版本(任何版本都可以,尽管更高版本在OSX Lion上构建更简单):

    这将在“/usr/local/”中删除2个值得注意的文件。即
    /usr/local/lib/libjpeg.8.dylib
    /usr/local/include/jpeglib.h
    。现在我们只需要让PIL(或Pillow)在安装时使用这两个文件,我们就可以免费回家了。我知道有更好的方法可以做到这一点,但黑客(正如PIL文档所建议的那样)是在安装之前编辑PIL发行版的
    setup.py
    文件。您只需在
    setup.py
    顶部附近设置
    JPEG\u ROOT=libinclude('/usr/local')
    ,就可以解决问题,不过可能需要在文件的其他地方进行进一步的目录操作

    当您摆弄路径时,您必须确保PIL在测试它是否链接到正确的库之前进行了完整的重建。我使用了类似于
    rm-rf build&&python setup.py install的命令来确保库始终新链接到我正在测试的当前路径

    很抱歉,这是一个漫无边际的回答,但尝试了所有其他复制粘贴解决方案,却没有一个有效,这是非常令人沮丧的。希望这个答案能让至少一些人避免浪费大量时间去寻找一个简单的解决方案


    祝你好运

    我遇到了一个与OP稍有不同的问题,但我想在这里分享我的解决方案,以帮助将来的人

    OS:OSX El Capitan
    我从他们网站上预编译的二进制文件中安装了libjpeg-turbo。然而,我不知道我的mac上已经安装了不同版本的libjpeg。我是这样构建我的c文件的
    gcc myfile.c-o myfile.out-L/opt/libjpeg-turbo/lib-ljpeg
    。这从正确的位置获取了库,但是链接器从预安装位置获取了包含的头文件
    jpeglib.h
    。我将build命令更改为:
    gccmyfile.c-omyfile.out-I/opt/libjpeg-turbo/include/-L/opt/libjpeg-turbo/lib-ljpeg
    ,它成功了。没有更多的库是80,来电者期望62

    就像前面的回答一样,我的问题与OP略有不同,但我想在这里分享我的解决方案,以帮助将来的人

    对我来说唯一有效的事情是在安装了所需库的dev版本后,强迫pip从源代码构建pillow(我的代码是编辑jpg并使用自定义字体添加标签)。这是在一个基于ARM的嵌入式设备上使用Python3.7.3运行UbuntuLinux

    apt-get install -y libjpeg-dev libfreetype6-dev
    pip3 install pillow --global-option="build_ext" --global-option="--enable-jpeg" --global-option="--enable-freetype" 
    

    谢谢你的回复-我开始了-不知道我做了什么,但现在它起作用了。。。某种程度上。虽然我很想把这个标记为一个好的答案,但我不会冒着破坏我的完美安装的风险去尝试它-再次感谢也许它会帮助别人
    apt-get install -y libjpeg-dev libfreetype6-dev
    pip3 install pillow --global-option="build_ext" --global-option="--enable-jpeg" --global-option="--enable-freetype"