在Mac OS X 10.9上使用pip安装Python图像库时出错


78

我想使用pip在Mavericks上安装PIL,但出现此错误。

_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
#include <freetype/fterrors.h>
         ^
1 error generated.
error: command 'cc' failed with exit status 1

我的命令行工具已安装并且是最新的,我发现的每个提示都无济于事。我该如何进行编译?

编辑:我刚刚检查过,freetype也已经通过自制软件安装了


您需要freetype标题。
devnull

是的,我猜到了;)还找到了解决此问题的方法。
LukasSpieß'13

Answers:


210

而不是符号链接到特定版本的freetype2,请执行以下操作:

ln -s /usr/local/include/freetype2 /usr/local/include/freetype

这样可以节省升级freetype2时重新创建符号链接的麻烦。


1
使用完后sudo easy_install PIL,我遇到了这个问题,您的解决方案就像一个魅力!谢谢!
spiralmoon 2014年

3
这也解决了优胜美地的问题
stevejpurves

我已经链接了freetype2,最好将原始链接链接到/usr/local/Cellar/freetype/2.5.5/include/freetype2
Salyangoz,2015年

1
@Salyangoz:/ usr / local / include / freetype2是/usr/local/Cellar/freetype/2.5.5/include/freetype2的符号链接(由Homebrew创建)。使用此路径而不是实际路径,在进行升级时具有一个优势,即仍然可以使用。
mcuelenaere 2015年

2
Freetype2未安装在运行El Capitan的计算机上,因此我必须先运行brew install freetype才能进行此符号链接
skandocious

31

使用macports,适用于我的解决方案:

sudo port install freetype
sudo ln -s /opt/local/include/freetype2 /opt/local/include/freetype

然后重新运行PIL构建过程。


当我升级为特立独行的感谢时,这对我有用
Mo J. Mughrabi 2014年

从2.2升级到cocos2dx v3.3时,我在优胜美地上工作
andrewz 2015年

28

我已经通过以下符号链接解决了这个问题:

ln -s /usr/local/Cellar/freetype/2.5.1/include/freetype2 /usr/local/include/freetype

我也已经通过homebrew安装了freetype。


5

这是由于freetype> = 2.1.5的标头中的更改引起的。PIL没有使用正确的文档方式包括freetype标头,这导致构建失败,因为freetype最终删除了人们早已弃用的包括标头的方式。该问题记录在http://freetype.sourceforge.net/freetype2/docs/tutorial/step1.html的顶部:

注意:从FreeType 2.1.6开始,不再支持旧的头文件包含方案。这意味着,如果您执行以下操作,则现在会出现错误:

#include <freetype / freetype.h>
#include <freetype / ftglyph.h>

请将此问题带到PIL开发人员的上游,并建议他们使用记录的方式包括freetype标头:

#include <ft2build.h>
#include FT_ERRORS_H


4

经过多次尝试,我解决了在没有Freetype支持的情况下编译PIL的问题。为此,我只需使用brew unlink freetype和取消与$ PATH的链接pip install PIL==1.1.7


什么是自由类型?:)
斯坦顿

3

我只是使用Stackoverflow答案中描述的步骤解决了这一问题。似乎这是Xcode的错误,因为它在奇怪的位置安装了freetype。



2

在我的OSx中,我发现.h文件不/opt/local/include/freetype2正确。所以,我输入

sudo ln -s /opt/local/include/freetype2/ /usr/local/include/freetype

有用

也许最好的方法是添加/opt/local/include到您的clang的include路径。


1

osx优胜美地,这对我有用:

(virtualenv)

$ ln -s /opt/local/include/freetype2/ /usr/local/include/freetype2
$ pip install pil==1.1.7 --allow-external pil --allow-unverified pil

仅运行第一行,然后在优胜美地上为我工作。能够pip install PIL
亚伦·阿什

0

我正在使用Arch Linux,并且遇到了这个问题。就我而言,必须手动从https://pypi.python.org/pypi/Pillow/2.2.1#downloads下载并解压缩zip文件。然后我编辑的文件_imagingft.c更改包括路径freetype/fterrors.hfterrors.h,因为没有freetype的子目录/usr/include/freetype2,其中fterrors.h位于。最后python setup.py install工作正常。

编辑:我应该提到这是安装Pillow而不是PIL的解决方案,但是Pillow只是PIL的一个分支,它可能仍然适用于其他有此问题的人。


0

如果您仍在像我阅读本文和其他谷歌搜索之后那样寻找答案,那么您可能会感兴趣的是:

警告

枕头> = 2.1.0不再支持“ import _imaging”。请改为使用“从PIL.Image导入核心作为_imaging”。

这里

到您阅读本文时,页面可能已更改,但文本至少仍会在此处。

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.