如果这个话题已经讨论过了,我提前道歉。我的情况似乎与其他人略有不同,以至于我的文件路径不同。尝试在 Mac OS X 10.8.5 上安装 matplotlib 时返回以下错误:
pip install matplotlib
# lots of install details here...
/usr/X11/include/ft2build.h:56:10: fatal error: 'freetype/config/ftheader.h' file not found
#include <freetype/config/ftheader.h>
^
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/tmp/pip_build_root/matplotlib/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ohMPzS-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/tmp/pip_build_root/matplotlib
Storing debug log for failure in /Users/administrator/Library/Logs/pip.log
我的 Homebrew 安装了以下内容:
fontconfig
gfortran
jpeg
libtiff
pkg-config
freetype
libpng
我使用的是 Mac 版本的 Python 2.7.2,位于 /usr/bin/python
因此我使用 Finder 搜索 ftheader.h,它显示该文件位于:
/opt/X11/include/freetype2/freetype/config/ftheader.h
我的问题是:
- matplotlib 是否在错误的地方寻找 ftheader.h?
- 如果是这样,我该如何告诉它在正确的位置查找?
- 或者,是其他原因导致了这个问题?
谢谢你!
更新:
这似乎已经解决了问题:
sudo ln -s /usr/local/include/freetype2/ /usr/include/freetype
这将创建从 /usr/include/freetype 到 /usr/local/include/freetype2/ 的符号链接(单击 /usr/include/freetype 时,您将被重定向到 /usr/local/include/freetype2/)。在创建符号链接之前,最好验证系统上的第一个路径是否正确。如果不存在,则会创建第二个路径。
创建符号链接后,我sudo pip install matplotlib
再次尝试,这次成功安装。非常感谢这个帖子谢谢你的想法!如果后续出现错误,我会报告。
还值得注意的是matplotlib 二进制存在。
答案1
我认为改变 /usr/include 的内容(如另一个答案和其他类似帖子中所建议的)通常不是一个好主意;这是 Apple 的“财产”。类似的StackOverflow 上的问题在 Homebrew 安装环境中,建议在 /usr/local/include 内进行链接,这更安全,但可能仍然不是一个好主意,因为 Homebrew 坚持这一点。
我认为更好的解决方案是遵循 matplotlib 安装说明并使用 setup.cfg 文件来指定不在预期位置的资源的位置。在让 pip 管理安装的同时执行此操作:
下载 mpl 源并将其解压到 DIR(例如,DIR=matplotlib-1.3.1)。
cd DIR
,将“setup.cfg.template”复制到“setup.cfg”,并编辑目录部分使其如下所示(假设您已将 freetype2 安装到 /usr/local,例如通过 Homebrew):[directories] # Uncomment to override the default basedir in setupext.py. # This can be a single directory or a comma-delimited list of directories. #basedirlist = /usr basedirlist = /usr/local/include/freetype2/
通过以下方式就地构建 matplotlib(但不要安装它):(
python setup.py build_ext
在我的 MacBook Pro 上大约需要一分钟)。使用 pip 从该目录进行安装:(
pip install .
注意点!)。
Pip 将会把它识别为 matplotlib 并进行适当的索引。
当我执行此操作时,我已经安装了 mpl 的依赖项,所以我不确定缺少其中一些是否会使这变得复杂。