问题描述
如何在Ubuntu上安装python映像库(PIL)?
我试过了
sudo apt-get install python-imaging
但现在当我运行python selftest.py(我从http://pythonware.com/products/pil/网站上某处获得的脚本)时,我得到(以及其他警告信息):
...
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
...
*** 1 tests of 57 failed.
我有点搞砸了PIL – 我该如何解决这个问题?
可能是PIL就好了,但是”selftest.py”并不是用于检查PIL是否安装正确的正确程序 – 如果PIL安装正确,我怎么知道呢?
(我正在使用Ubuntu 12.04 LTS “Precise Pangolin”)。
(我最终要做的是为一些python代码添加一个二维条码生成器,我能找到的所有二维条码生成器都是用python编写的,似乎都使用了PIL)。
最佳解决方案
类似的事情发生在我身上,我这样解决了
sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev
并尝试通过pip install PIL
安装。
有关pip
的更多信息,请访问here。简而言之,是安装python库的一种方便(并且成为标准)的方式。
如果它继续失败,可能是由于PIL在不同的路径中搜索这些库。
It turns out that the APT installations put the libraries under /usr/lib/x86_64-linux-gnu and PIL will search for them in /usr/lib/. So you have to create symlinks for PIL to see them.
尝试查看/usr /lib /x86_64-linux-gnu中是否存在libjpeg和libz库并以这种方式创建符号链接
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so.62 /usr/lib/
资料来源:http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/
次佳解决方案
上面的解决方案在Ubuntu 12.10上不起作用,因为libjpeg在存储库中不可用。
最终为我工作的是:
sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
如果您收到错误“您必须在sources.list中放置一些’source’ URI”,请确保您的/etc/apt/sources.list具有与您的deb条目匹配的deb-src条目。
然后,您必须将文件从服务器上的实际位置符号链接到PIL期望的位置。
32位版本
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/libz.so
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/libfreetype.so
64位版本
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/libz.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/libfreetype.so
最后,pip install PIL
成功!
2014年9月更新
Pillow是一个更现代的PIL分支。
#jpeg support
sudo apt-get install libjpeg-dev
#tiff support
sudo apt-get install libtiff-dev
#freetype support
sudo apt-get install libfreetype6-dev
#openjpeg200support (needed to compile from source)
wget http://downloads.sourceforge.net/project/openjpeg.mirror/2.0.1/openjpeg-2.0.1.tar.gz
tar xzvf openjpeg-2.0.1.tar.gz
cd openjpeg-2.0.1/
sudo apt-get install cmake
cmake .
sudo make install
#install pillow
pip install pillow
第三种解决方案
我只想补充说,pip install pil
不再有效,至少在我的机器上,你必须要做
pip install PIL --allow-external PIL --allow-unverified PIL
第四种方案
以上答案为x86位置的x64库创建链接。相反,我会下载PIL source然后在setup.py中添加这些行:
add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
add_directory(library_dirs, "/lib/x86_64-linux-gnu")
在这些行之后(〜第211行)
# standard locations
add_directory(library_dirs, "/usr/local/lib")
add_directory(include_dirs, "/usr/local/include")
add_directory(library_dirs, "/usr/lib")
add_directory(include_dirs, "/usr/include")
重新安装PIL。如果你正在使用pip:
pip uninstall PIL
然后从源目录运行:
python setup.py install
第五种方案
这个解决方案适用于Ubuntu 14.04,因为libjpeg在存储库中不可用。
什么最终为我工作
sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
第六种方案
sudo apt-get install python-imaging
现在是installs Pillow not PIL。对于selftest.py
,您可能需要check out the source才能运行它。当然,如果您希望PIL支持它们,您需要安装依赖项,例如
sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev
运行比Ubuntu中包含的更新的PIL版本::
pip install Pillow
第七种方案
我需要在14.04(不使用系统包)的virtualenv中安装Pillow。
要在virtualenv(Python 2.7)中从PyPI构建 Pillow :
$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow
…然后你可以导入PIL。