
이 주제가 이미 논의되었다면 미리 사과드립니다. 내 상황은 내 파일 경로가 다르기 때문에 다른 상황과 약간 다른 것 같습니다. 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
그리고 /usr/bin/python에서 Mac 버전의 Python 2.7.2를 사용하고 있습니다.
그래서 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의 내용을 변경하는 것이 (다른 답변 및 기타 유사한 스레드에서 제안된 것처럼) 일반적으로 좋은 생각이라고 생각하지 않습니다. 그것이 애플의 "재산"이다. 비슷한StackOverflow에 대한 질문, Homebrew 설치의 맥락에서 대신 /usr/local/include 내 링크를 권장합니다. 이는 더 안전하지만 Homebrew가 이를 유지 관리하기 때문에 여전히 좋은 생각은 아닐 것입니다.
더 나은 해결책은 matplotlib 설치 지침을 따르고 setup.cfg 파일을 사용하여 예상 위치에 없는 리소스의 위치를 지정하는 것입니다. pip가 설치를 관리하도록 하는 동안 이를 수행하려면:
mpl 소스를 다운로드하고 DIR(예: DIR=matplotlib-1.3.1)에 압축을 풉니다.
cd DIR
, 'setup.cfg.template'을 'setup.cfg'에 복사하고 디렉터리 섹션을 다음과 같이 편집합니다(예: Homebrew를 통해 freetype2를 /usr/local에 설치했다고 가정).[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에서는 약 1분 정도 소요됩니다.)해당 디렉터리 내에서 pip를 사용하여 설치합니다
pip install .
(점을 참고하세요!).
Pip은 이를 matplotlib로 인식하고 적절하게 색인을 생성합니다.
이 작업을 수행할 때 이미 mpl의 종속성이 설치되어 있었기 때문에 그 중 일부가 누락되어 문제가 복잡해지는지 확실하지 않습니다.