Файл OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h' не найден
Я заранее прошу прощения, если эта тема уже обсуждалась. Моя ситуация, кажется, немного отличается от других, так что путь к моим файлам отличается. При попытке установить matplotlib в Mac OS X 10.8.5 возвращается следующая ошибка:
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
На My 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
снова и на этот раз он успешно установлен. Mucho подпирает этот пост за идею! Я сообщу обратно, если что-то выдаст ошибку позже вниз по течению.
Также стоит отметить, что существует бинарный файл 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 .
(обратите внимание на точку!).
Пип будет распознавать его как matplotlib и индексировать соответствующим образом.
Когда я это сделал, у меня уже были установлены зависимости mpl, поэтому я не уверен, что отсутствие некоторых из них усложняет это.