用pip安装PIL


349

我正在尝试使用以下命令安装PIL(Python Imaging Library):

sudo pip install pil

但我收到以下消息:

Downloading/unpacking PIL
  You are installing a potentially insecure and unverifiable file. Future versions of pip will default to disallowing insecure files.
  Downloading PIL-1.1.7.tar.gz (506kB): 506kB downloaded
  Running setup.py egg_info for package PIL
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py

Installing collected packages: PIL
  Running setup.py install for PIL
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py
    --- using frameworks at /System/Library/Frameworks
    building '_imaging' extension
    clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -IlibImaging -I/System/Library/Frameworks/Python.framework/Versions/2.7/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.8-intel-2.7/_imaging.o
    unable to execute clang: No such file or directory
    error: command 'clang' failed with exit status 1
    Complete output from command /usr/bin/python -c "import setuptools;__file__='/private/tmp/pip_build_root/PIL/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-AYrxVD-record/install-record.txt --single-version-externally-managed:
    WARNING: '' not a valid package name; please use only.-separated package names in setup.py

running install

running build

.
.
.
.

copying PIL/XVThumbImagePlugin.py -> build/lib.macosx-10.8-intel-2.7

running build_ext

--- using frameworks at /System/Library/Frameworks

building '_imaging' extension

creating build/temp.macosx-10.8-intel-2.7

creating build/temp.macosx-10.8-intel-2.7/libImaging

clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -IlibImaging -I/System/Library/Frameworks/Python.framework/Versions/2.7/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _imaging.c -o build/temp.macosx-10.8-intel-2.7/_imaging.o

unable to execute clang: No such file or directory

error: command 'clang' failed with exit status 1

----------------------------------------
Cleaning up

您能帮我安装PIL吗?


您是否已经安装了Xcode,然后又安装了Xcode的命令行工具?看来您没有clang编译器。
Fiver

Answers:


586
  1. 如上所述安装Xcode和Xcode命令行工具。
  2. 请改用Pillow,因为PIL基本已失效。枕头是PIL的保养品。

https://pypi.python.org/pypi/Pillow/2.2.1

pip install Pillow

如果您同时安装了两个Python,并且想为Python3安装此代码,请执行以下操作:

python3 -m pip install Pillow

5
clang尝试此操作时,我在OSX Mavericks上遇到错误,但我发现此答案对此有所帮助:stackoverflow.com/a/22322645/16959
Jason Sperske 2014年

34
虽然这是一个有效且有用的答案,但实际上并不能回答问题。对于那些正在修复旧项目的过程中的人,可能需要填充PIL依赖关系,以便我们找到下一个将要破坏的东西,我们实际上需要获得实际的依赖关系(有时甚至需要获取特定版本有人对其进行了入侵)。
纳西2014年

3
@Namey可以很容易地将现有的PIL代码移植到Pillow 。将PIL移植到Pillow。枕头基于PIL代码,并已发展成为更好,更现代且更友好的PIL版本。
GiriB 2015年

7
@GiriB感谢您的更新。我的主要观点是,在很多情况下,您需要在一些旧的生产代码上开始工作,这些代码有20个古老的依赖关系,其中PIL可能是其中之一,并且您需要调试一些东西才能对生产代码进行修复。在那种情况下,您绝对可以肯定的是,不必为开始连接生产环境中发生的单行错误的调试而编写连接到开发版本上约10个不同库的代码的端口。希望这可以澄清。
命名

我正在尝试使用的库import Image。有没有办法让枕头提供图像?
AnnanFay

60

这对我有用:

apt-get install python-dev
apt-get install libjpeg-dev
apt-get install libjpeg8-dev
apt-get install libpng3
apt-get install libfreetype6-dev
ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib

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

9
在64位平台上,链接路径需要不同-例如/usr/lib/x86_64-linux-gnu/libfreetype.so。要获得与架构无关的解决方案,请创建链接,例如# ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
Mark Chackerian 2014年

映像标题总是相同的问题:_imagingft.c:73:31:致命错误:freetype / fterrors.h:没有这样的文件或目录#include <freetype / fterrors.h>因此,您必须通过pip安装python-imaging
2014年

像这里提到的freetype标头中总是存在问题[ askubuntu.com/questions/507459/…?解决方案:cd / usr / include ln -s freetype2 freetype
c24b 2014年

1
在ubuntu 14.04下,还需要1个符号链接 sudo ln -s /usr/include/freetype2 /usr/local/include/freetype
Akasha 2014年

1
对我来说效果很好,秘密是
--allow-

54

使用apt install非常简单,使用此命令即可完成

sudo apt-get install python-PIL

要么

sudo pip install pillow

要么

sudo easy_install pillow

2
如果正在运行,请不要忘记重启ipython笔记本服务器。
shousper '16

须藤点子安装枕头为我工作。sudo apt-get install python-PIL没有。
于申

1
我发现它区分大小写,所以:sudo apt-get install python-PIL =>失败(未找到软件包)sudo apt-get install python-pil =>正常工作
Clarkey252

35

在Mac OS X上,使用以下命令:

sudo pip install https://effbot.org/media/downloads/Imaging-1.1.7.tar.gz

也在debian jessy上工作!,只需要事先安装python-dev :)
Agey 2015年

1
我必须先安装libjpeg: brew install libjpeg
Pierre F

最后是一个实际的解决方案。我的Mac没有apt-get:p,无论如何我都想安装在virtualenv中。
sudo

使用sudo pip install Pillow-如下。
johndpope


26

我从这里的讨论中得到了答案:

我试过了

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

而且有效。


8
考虑使用此方法:pip install --no-index -f http://effbot.org/downloads/ -U PIL --trusted-host effbot.org我使用此方法的原因是因为它是程序包中列出的pypi.python.org/pypi/PIL
Tom Myddeltyn

1
我收到使用HTTPS而不是HTTP的警告。更改网址后,效果很好。
AnnanFay

@TomMyddeltyn几乎可以正常工作,除了我遇到无法找到X11 / Xlib.h的编译器错误
罕见,

@不常见,我不确定存在什么问题,对不起。
Tom Myddeltyn

21

安装

pip install Pillow

然后,只需导入文件,例如

from PIL import Image

我正在使用Windows。它为我工作。

注意

Pillow是Python Imaging Library的功能替代品。要使用Pillow运行现有的PIL兼容代码,需要对其进行修改以从PIL名称空间而不是全局名称空间导入Imaging模块。

即更改:

import Image

至:

from PIL import Image

https://pypi.org/project/枕头/2.2.1/


谢谢!在读名称“ PIL”时,from PIL import Image我永远猜不到该库的名称是“枕头”。我也在Windows上,您的解决方案对我有用。
Marcos Buarque

Pillow是Python Imaging Library的功能替代品。要使用Pillow运行现有的PIL兼容代码,需要对其进行修改以从PIL名称空间而不是全局名称空间导入Imaging模块。即改变:import Imagefrom PIL import Image pypi.org/project/Pillow/2.2.1
CHANDAN夏尔马

感谢您提供其他背景信息!
Marcos Buarque

12

我认为您在Mac上。请参阅如何在Mac OS X 10.7.2 Lion上安装PIL

如果使用[homebrew] [],则可以使用just安装PIL brew install pil。然后,您可能需要将安装目录($(brew --prefix)/lib/python2.7/site-packages)添加到PYTHONPATH中,或者将PIL目录本身的位置添加到PIL.pth任何site-packages目录中名为file的文件中,内容如下:

/usr/local/lib/python2.7/site-packages/PIL

(假设brew --prefix/usr/local)。

另外,您也可以从源代码下载/构建/安装它:

# download
curl -O -L http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz
# extract
tar -xzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
# build and install
python setup.py build
sudo python setup.py install
# or install it for just you without requiring admin permissions:
# python setup.py install --user

我刚刚(在OSX 10.7.2,XCode 4.2.1和System Python 2.7.1上)运行了上面的代码,尽管在我的环境中某些内容可能不是默认值,但它的构建还不错。

[homebrew]:http : //mxcl.github.com/homebrew/ “ Homebrew”


虽然这解释了如何安装pil,但并没有通过pipOP最初尝试的方式来完成安装。brew这些天,我发现在网络上的大量使用并不理想。brew根据您要执行的操作,将安装大量的开销。因此pip可能仍然是python模块的最佳选择。
mknaf

11

如今,每个人都在PIL上使用友好的PIL叉子Pillow。

代替: sudo pip install pil

做: sudo pip install pillow

$ sudo apt-get install python-imaging
$ sudo -H pip install pillow

我建议不要这样做sudo pip install ...。这可能最终会破坏系统的Python安装,从而可能影响系统的应用程序。尝试使用Anaconda虚拟环境venv或Docker。
n1k31t4

11

对于Ubuntu,PIL不再起作用。我总是得到:

找不到与PIL匹配的分布

因此,安装python-imaging:

sudo apt-get install python-imaging

6

我遇到了同样的问题,但是通过安装 python-dev

在安装PIL之前,请运行以下命令:

sudo apt-get install python-dev

然后安装PIL:

pip install PIL

10
这并没有为我工作在Ubuntu 14 pip install pil的结果No distributions at all found for PIL,无论是我的第一或没有安装python-dev的。
aliteralmind 2014年

5

安装过程中出现了一些错误。以防万一有人也有这个。尽管我已经是管理员用户,但不是root用户。

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/PIL'

Storing debug log for failure in /Users/wzbozon/Library/Logs/pip.log

添加“ sudo”解决了问题,使用sudo可以解决问题:

~/Documents/mv-server: $ sudo pip install Pillow


5

我尝试了所有答案,但失败了。直接从官方站点获取源代码,然后构建安装成功。

  1. 前往网站 http://www.pythonware.com/products/pil/#pil117
  2. 单击“ Python Imaging Library 1.1.7源工具包”以下载源
  3. tar xf Imaging-1.1.7.tar.gz
  4. cd Imaging-1.1.7
  5. sudo python setup.py install


3

尝试这个:

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

2
虽然此答案可能是正确的,但请添加一些说明。赋予底层逻辑比提供代码更重要,因为它有助于OP和其他读者自己解决此问题和类似问题。
CodeMouse92

请注意,此命令对我来说超时。无论如何,它将在几周内弃用。sudo pip install --allow-external --allow-unverified PIL PIL可能现在也可以使用。
例如,按

3
--allow-external并且--allow-unverified都已弃用。pip install pillow是正确的答案。
多里安

1
我发布的答案是stderr向我建议的。因此,尽管我的答案现在已经过时,但这不是我写这篇文章的时间。另外,我对直接发送给JasonMc92的消息表示歉意(此消息已被删除)。我的语气不合时宜,但我的情绪依然存在。拖曳首页并复制/粘贴有关“赋予底层逻辑”的注释有些令人反感。也许您正在追逐徽章,我想这很好,但是为了保持一致,请对这个问题的所有其他类似答案发表评论,这些答案都没有逻辑上的依据。
阿方索


3
  • 首先,您应该运行此程序sudo apt-get build-dep python-imaging,它将为您提供可能需要的所有依赖项

  • 然后跑 sudo apt-get update && sudo apt-get -y upgrade

  • 其次是 sudo apt-get install python-pip

  • 然后最后安装Pil pip install pillow


2

使用之前,请先搜索软件包管理器pip。在Arch Linux上,您可以通过以下方式获取PIL:pacman -S python2-pillow


0

还有另一个名为的Python打包工具conda。当某些库需要安装C ++和其他非纯Python的绑定时,Conda优于pip(我认为)。Conda的安装中还包括点子,因此您仍然可以使用点子,但您也可以从conda中受益。

默认情况下,Conda还安装IPython,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.