pip install PIL -E TICKETS-1 - 无JPEG/PNG支持

Jul*_*pov 27 python virtualenv python-imaging-library

我正在为我的Django项目使用Ubuntu和VitualEnv.

我使用Synaptic Package Manager安装了PIL库,它运行正常.但是当我创建一个VitrualEnv并尝试使用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.
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用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/
Run Code Online (Sandbox Code Playgroud)

在接着尝试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.
Run Code Online (Sandbox Code Playgroud)

编辑:您可能需要安装 libfreetype6-dev libjpeg8-dev

编辑:另一个不错的选择是使用Pillow而不是PIL

Joh*_*yes 9

对Ubuntu论坛主题涵盖了这个主题.


Ser*_*rov 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/
Run Code Online (Sandbox Code Playgroud)

并且您需要在virtualenv激活的shell会话中执行这些行,将在您的virtualenv lib目录中创建符号链接.

命令dpkg-architecture -qDEB_HOST_MULTIARCH用于检测主系统libs目录(uname -i不可靠).环境变量$VIRTUAL_ENV由virtualenv activate脚本设置.


jMy*_*les 5

一个似乎对我们有用的解决方案(从 PIL 1.7.7 开始)是先卸载 PIL,然后是 Pillow,然后 pip install Pillow --upgrade。当然你需要安装 libjpeg8-dev。

  • 谢谢,我尝试了很多方法,但这是唯一修复它的方法! (2认同)