如何安装python映像库(PIL)?


35

如何在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代码中添加2D条码生成器,而我发现所有用python编写的2D条码生成器似乎都使用了PIL。)


2
您可能想尝试在应用程序中使用PIL,selftest.py可能只是一个问题-Aaron
Hill

1
在18.04中,您看起来就像是sudo apt-get install python-pil还是sudo apt-get install python3-pil
舒勒

^绝对是,sudo apt-get install python-pil我在raspbian上为我工作。
alecxe

Answers:


25

我发生了类似的事情,我这样解决了

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

并尝试通过安装pip install PIL

这里pip可以找到更多关于什么的信息。简而言之,这是安装python库的便捷方法(并成为一种标准方法)。

如果继续失败,则可能是由于PIL在其他路径中搜索了这些库。

事实证明,APT安装将库放在/ usr / lib / x86_64-linux-gnu下,PIL将在/ usr / lib /中搜索它们。因此,您必须为PIL创建符号链接才能看到它们。

尝试查看/ usr / lib / x86_64-linux-gnu中是否存在libjpeg和libz lib,并以这种方式进行符号链接

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.04 64bit上对我不起作用。
Gus E

1
如果适合您的需求,可以尝试“枕头”。这是替代PIL的一滴水。
Hernantz 2013年

7
尽可能使用pillow。它本质上是PIL,但实际上得到了维护。
塔娜·布里姆霍尔

软件包zlib1g-dev不可用,但由另一个软件包引用。这可能意味着该软件包丢失,已被废弃或只能从其他来源获得。E:无法找到软件包libjpeg E:无法找到软件包libjpeg-dev E:无法找到软件包libfreetype6-dev E:软件包'zlib1g -dev'没有安装候选程序
Aalok

Ubuntu 12.04 LTS中的python-imaging软件包链接到JPEG库,更改日志中提到在2011年7月之前破坏了多体系结构。也许这selftest.py也已因此而被破坏,但这并不一定影响其他任何事物。
Josip Rodin

30

上面的解决方案在Ubuntu 12.10上对我不起作用,因为该库中没有libjpeg。

最终为我工作的是:

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

如果出现错误“您必须在sources.list中放入一些'源'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月更新

枕头是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

1
使用Pillow在13.04上为我工作,没有符号链接。
尤金·纳戈尔尼

2
也为我工作(14.04 LTS 64位,未从上面进行修改):sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh 2015年

我只需要“ apt-get build-dep python-imaging”
peterretief

13

我只想补充一点pip install pil,至少在我的机器上,它 不再起作用,您必须这样做

pip install PIL --allow-external PIL --allow-unverified PIL


5
尝试pip install Pillow代替pip install pill(后者不存在)
声明

@Lynob这和PIL一样吗?并由TkInker支持吗?
3kstc

@ 3kstc是的
Lynob

4

上面的答案在x86位置为x64库创建链接。相反,我会下载PIL源,然后在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

2

该解决方案在Ubuntu 14.04上对我有效,因为该库中没有libjpeg。

最终为我工作的是什么

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

2

sudo apt-get install python-imaging现在安装Pillow而不是PIL。至于selftest.py,您可能需要检出源以运行它。当然,如果您希望PIL支持它们,则需要安装依赖项。

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

要运行比Ubuntu中包含的PIL更新的版本:

pip install Pillow

2

我需要在14.04上的virtualenv中点安装Pillow(不使用系统软件包)。

要在virtualenv(Python 2.7)中从PyPI构建枕头:

$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow

...然后您可以导入PIL

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.