pip安装PIL -E TICKETS-1 - 无JPEG/PNG支持
我在使用Ubuntu和VirtualEnv来做我的Django项目。
我通过Synaptic包管理器安装了PIL库,运行得很好。但是当我创建一个VirtualEnv并尝试用pip安装PIL时,虽然安装成功了,但却出现了一些奇怪的情况:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
我本来希望可以用requirements.txt来管理我所有的依赖库,但可能PIL需要手动安装……那该怎么做呢?
编辑:谢谢你,John Keyes,你说得对,我运行了:
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/
然后在再次尝试安装PIL后,我得到了:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
- -------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
编辑:你可能需要安装 libfreetype6-dev libjpeg8-dev
3 个回答
5
我们找到的一个解决办法(截至PIL 1.7.7版本)是先卸载PIL,然后再卸载Pillow,接着用命令pip安装最新版本的Pillow。记得你需要先安装libjpeg8-dev这个库。
6
如果你在使用虚拟环境(virtualenv),那么你就不需要在系统范围内创建符号链接。这里有一个通用的方法,适用于任何架构:
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libz.so $VIRTUAL_ENV/lib/
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libfreetype.so $VIRTUAL_ENV/lib/
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libjpeg.so $VIRTUAL_ENV/lib/
你需要在虚拟环境被激活的命令行中执行这些命令,这样符号链接就会在你的虚拟环境的 lib
目录下创建。
命令 dpkg-architecture -qDEB_HOST_MULTIARCH
是用来检测主系统库的目录的(uname -i
这个命令不太可靠)。而环境变量 $VIRTUAL_ENV
是由虚拟环境的 activate
脚本设置的。
9
这个在Ubuntu论坛上的帖子讨论了这个话题。