Файл OSX 10.8 PIP matplotlib 'freetype/config/ftheader.h' не найден

Файл 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

В моем Homebrew установлено следующее:

fontconfig
gfortran
jpeg
libtiff
pkg-config
freetype
libpng

Я использую версию Python 2.7.2 для Mac в /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 управлять установкой:

  1. Загрузите исходный код mpl и распакуйте его в DIR (например, DIR=matplotlib-1.3.1).

  2. 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/
    
  3. Соберите matplotlib на месте (но не устанавливайте его) с помощью: python setup.py build_ext(на моем MacBook Pro это займет около минуты).

  4. Установите с помощью pip из этого каталога: pip install .(обратите внимание на точку!).

Pip распознает его как matplotlib и соответствующим образом проиндексирует.

Когда я это делал, у меня уже были установлены зависимости mpl, поэтому я не уверен, усложнит ли это отсутствие некоторых из них.

Связанный контент