如何在Ubuntu 11.04中安装PIL?

joh*_*n2x 10 python ubuntu python-imaging-library

我在互联网上看到这个问题,并且我已经尝试过全部跟踪它们,但我仍然无法让PIL工作.

我尝试通过以下方式象征性地链接zlib,jpeg等库:

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/
Run Code Online (Sandbox Code Playgroud)

我尝试编辑setup.py文件,添加以下行:

add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
Run Code Online (Sandbox Code Playgroud)

实际上,运行$ sudo python setup.py install显示JPEG,ZLIB/PNG等支持是可用的.(我正在为2.5和2.7安装它,两者都不适用)

sudo python2.5 setup.py install
running install
running build
running build_py
running build_ext
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.5.6 (r256:88840, Feb  1 2012, 15:55:08)
              [GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
--- LITTLECMS support available
Run Code Online (Sandbox Code Playgroud)

但毕竟,我仍然得到一个decoder %s not available错误.

我的智慧结束了.还有什么我可能错过的?

我的环境: 在VirtualBox VM中运行的64位Ubuntu 11.04.

以下是我测试PIL是否有效的方法

$ python
>>> from PIL import Image
>>> im = Image.open("photo.jpg")
>>> im.rotate(45)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1359, in rotate
  self.load()
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFile.py", line 189, in load
  d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 385, in _getdecoder
  raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available
>>> 
Run Code Online (Sandbox Code Playgroud)

Gar*_*tty 12

与往常一样,使用包管理器:

sudo apt-get install python-imaging
Run Code Online (Sandbox Code Playgroud)

它会为你处理这一切.该套餐可供选择.

在任何Linux发行版中手动安装都是一种浪费的努力,除非软件包确实不存在.软件包维护人员花时间确保软件包正常工作和安装,没有必要重复他们的工作.特别是不要手动安装那些没有包装优点的东西 - 没有自动更新,不易拆卸等等......