安装PIL
,问题多多,现将出现问题,原因,以及解决方法总结如下:
PIL的官方版本,但是最后一次维护是2009年,现以宣布停止维护,可以运行在python2.7上。
PillowPIL
的fork版本,还在继续维护更新,建议安装Pillow
。
在安装Pillow之前,请卸载PIL
sudo pip uninstall PIL
安装Pillow 依赖,下面安装是真对ubuntu14.04版本
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk```
下面介绍各包提供功能,以及需要的包版本限制(重要)
ibjpeg provides JPEG functionality.
- Pillow has been tested with libjpeg versions 6b, 8, 9, and 9a and libjpeg-turbo version 8.
- Starting with Pillow 3.0.0, libjpeg is required by default, but may be disabled with the--disable-jpeg
flag.
zlib provides access to compressed PNGs
- Starting with Pillow 3.0.0, zlib is required by default, but may be disabled with the--disable-zlib
flag.
libtiff provides compressed TIFF functionality
- Pillow has been tested with libtiff versions 3.x and 4.0
libfreetype provides type related services
littlecms provides color management
- Pillow version 2.2.1 and below uses liblcms1, Pillow 2.3.0 and above uses liblcms2. Tested with 1.19 and 2.7.
libwebp provides the WebP format.
- Pillow has been tested with version 0.1.3, which does not read transparent WebP files.
- Versions 0.3.0 and above support transparency.
tcl/tk provides support for tkinter bitmap and photo images.
openjpeg provides JPEG 2000 functionality.
- Pillow has been tested with openjpeg 2.0.0 and 2.1.0.
- Pillow does not support the earlier 1.5 series which ships with Ubuntu and Debian.
在我的ubuntu14.04
中openjpeg
版本过低,所以找到openjpeg的官方网站编译安装最新版的openjpeg
- 下载 openjpeg 包
-
cd DownloadPath
tar -xzvf Download file name
cd Download file
sudo cmake .
sudo make
sudo make install
完成依赖安装后,使用命令sudo pip install Pillow
安装Pillow
图片中的内容包括Pillow中的各个功能是否支持,如果这些功能出现unsupport ,那么就参考上面包提供功能,检测系统下依赖包是否满足Pillow的要求。
最后打开python解释器,输入
from PIL import Image
如果成功导入,说明 安装成功。
在我的ubuntu 14.04安装成功后,在导入仍然提示:[PIL - libopenjp2.so: cannot open shared object file: No such file or directory]
这样的错误,在stackoverflow找到了解决方法:
-
wheries libopenjp2
找到动态链接库的文件位置 -
cd \etc ls -l |grep 'ld.so.conf'
找到ld.so.conf
文件 - 编辑该文件,将
libopenjp2
库的路径,添加到ld.so.conf
文件中 -
sudo ldconfig
下面是python找不到动态链接库的原因:以及设置 LD_LIBRARY_PATH有时不能良好解决问题的原因:
sys.path is only searched for Python modules. For dynamic linked libraries, the paths searched must be in LD_LIBRARY_PATH. Check if your LD_LIBRARY_PATH includes /usr/local/lib, and if it doesn't, add it and try again.In Linux, the environment variable LD_LIBRARY_PATH is a colon-separated set of directories where libraries should be searched for first, before the standard set of directories; this is useful when debugging a new library or using a nonstandard library for special purposes. The environment variable LD_PRELOAD lists shared libraries with functions that override the standard set, just as /etc/ld.so.preload does. These are implemented by the loader /lib/ld-linux.so. I should note that, while LD_LIBRARY_PATH works on many Unix-like systems, it doesn't work on all; for example, this functionality is available on HP-UX but as the environment variable SHLIB_PATH, and on AIX this functionality is through the variable LIBPATH (with the same syntax, a colon-separated list).
网友评论