
Peço desculpas antecipadamente se este tópico já foi discutido. Minha situação parece variar um pouco das outras, de modo que o caminho para meus arquivos é diferente. Ao tentar instalar o matplotlib no Mac OS X 10.8.5 o seguinte erro é retornado:
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
Meu Homebrew tem o seguinte instalado:
fontconfig
gfortran
jpeg
libtiff
pkg-config
freetype
libpng
E estou usando a versão Mac do Python 2.7.2 em /usr/bin/python
Então usei o Finder para procurar ftheader.h e ele diz que o arquivo está localizado em:
/opt/X11/include/freetype2/freetype/config/ftheader.h
Minhas perguntas são:
- O matplotlib está procurando ftheader.h no lugar errado?
- Se sim, como posso dizer para procurar no lugar certo?
- Ou algo mais está causando o problema?
Obrigado!
Atualizar:
Isso parece ter resolvido o problema:
sudo ln -s /usr/local/include/freetype2/ /usr/include/freetype
Isso cria um link simbólico de /usr/include/freetype para /usr/local/include/freetype2/ (quando você clica em /usr/include/freetype você será redirecionado para /usr/local/include/freetype2/). Antes de criar o link simbólico, é melhor verificar se o primeiro caminho está correto no seu sistema. O segundo caminho será criado se não existir.
Depois de criar o link simbólico, tentei sudo pip install matplotlib
novamente e desta vez ele foi instalado com sucesso. Mucho adereços paraesta postagempela ideia! Informarei se algo gerar um erro posteriormente.
Também é importante notar que umbinário matplotlibexiste.
Responder1
Não acho que alterar o conteúdo de /usr/include (como sugerido em outra resposta e em outros tópicos semelhantes) seja uma boa ideia em geral; essa é a “propriedade” da Apple. Um similarpergunta no StackOverflow, no contexto de uma instalação do Homebrew, em vez disso, recomenda vincular dentro de /usr/local/include, o que é mais seguro, mas provavelmente ainda não é uma boa ideia, já que o Homebrew mantém isso.
Acho que uma solução melhor é seguir as instruções de instalação do matplotlib e usar um arquivo setup.cfg para especificar os locais dos recursos que não estão onde são esperados. Para fazer isso enquanto deixa o pip gerenciar a instalação:
Baixe o código-fonte mpl e descompacte-o em DIR (por exemplo, DIR=matplotlib-1.3.1).
cd DIR
, copie 'setup.cfg.template' para 'setup.cfg' e edite a seção de diretórios para se parecer com o seguinte (assumindo que você instalou o freetype2 em /usr/local, por exemplo, via 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/
Crie o matplotlib no local (mas não o instale) via:
python setup.py build_ext
(leva cerca de um minuto no meu MacBook Pro).Instale com pip dentro desse diretório:
pip install .
(observe o ponto!).
Pip irá reconhecê-lo como matplotlib e indexá-lo adequadamente.
Eu já tinha as dependências do mpl instaladas quando fiz isso, então não tenho certeza se a falta de algumas delas complica isso.