IOError:使用Pillow时缺少jpeg解码器
在有人说 "sudo apt-get install libjpeg-dev"
或类似的建议之前,我得先说明一下,我没有sudo权限。我在一个不允许我使用sudo的服务器上。所以我必须在我的本地目录里完成这一切。这是我唯一能做的方式。
我需要一个Python脚本来调整图片的大小。对于png文件,它运行得很好,但在处理jpeg文件时就出错了,错误信息在标题里。
到目前为止,我已经采取了以下步骤:
- 下载了
libjpeg-dev
并安装到$HOME/jpegtest
,所以在jpegtest/文件夹里有lib/、include/等文件夹。 - 我手动下载了
Pillow
并解压到$HOME/Pillow
。 - 我修改了
setup.py
文件,把JPEG_ROOT
设置为libinclude(<jpegtest的绝对路径>)
。 我构建并编译了
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的库,所以不太确定。