IOError:使用Pillow时缺少jpeg解码器

6 投票
1 回答
3630 浏览
提问于 2025-04-18 08:54

在有人说 "sudo apt-get install libjpeg-dev" 或类似的建议之前,我得先说明一下,我没有sudo权限。我在一个不允许我使用sudo的服务器上。所以我必须在我的本地目录里完成这一切。这是我唯一能做的方式。

我需要一个Python脚本来调整图片的大小。对于png文件,它运行得很好,但在处理jpeg文件时就出错了,错误信息在标题里。

到目前为止,我已经采取了以下步骤:

  1. 下载了 libjpeg-dev 并安装到 $HOME/jpegtest,所以在jpegtest/文件夹里有lib/、include/等文件夹。
  2. 我手动下载了 Pillow 并解压到 $HOME/Pillow
  3. 我修改了 setup.py 文件,把 JPEG_ROOT 设置为 libinclude(<jpegtest的绝对路径>)
  4. 我构建并编译了 Pillow,它安装到了 $HOME//.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/Pillow-2.4.0-py2.7-linux-x86_64.egg。输出的重要部分如下:

    *** TKINTER support not available
    --- JPEG support available
    *** OPENJPEG (JPEG2000) support not available
    --- ZLIB (PNG/ZIP) support available
    *** LIBTIFF support not available
    *** FREETYPE2 support not available
    *** LITTLECMS2 support not available
    *** WEBP support not available
    *** WEBPMUX support not available
    

所以我认为这意味着JPEG支持应该可以正常工作,但当我运行我的程序时,它却显示:

IOError: decoder jpeg not available

在写这个的时候,我还注意到一个问题,链接在这里:Pillow在安装时识别JPEG编码器,但无法使用,听起来和我的问题很相似,所以我尝试了那里的解决方案:

ln -s /media/sdl1/home/midnight/jpegtest/lib/libjpeg.so /media/sdl1/home/midnight/.pythonbrew/pythons/Python-2.7.5/lib

但我还是遇到了同样的错误。

我已经在这个问题上花了大约两天的时间,但我不太确定该怎么做。如果有人能提供一些帮助,那将非常有用。

1 个回答

1

与其只是下载你需要的库,不如试着在你家文件夹里创建一个完整的Python环境:

$ wget http://www.python.org/ftp/python/[desired version of Python].tgz
$ tar xzf Python[version].tgz
$ cd python-[version]
$ ./configure
$ make altinstall prefix=~ exec-prefix=~

更新你的PATH变量,这样你的本地Python会优先执行:

$ PATH = /home/user/[pathtopython]:$PATH

获取pip,这样你就可以安装其他的包:

$ curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
$ ./get-pip.py
$ pip install pillow

网址可能会有所不同。你可能还需要修改setup.py - 我没有用这种方法处理过类似C的库,所以不太确定。

撰写回答