2014-09-03 3 views
3

Python 2.7.8을 사용하여 CentOS 6.5에 matplotlib-1.4.0을 설치하려고합니다. 나는 pip와 소스에서 설치를 시도했습니다. 처음에는 Freetype2의 최신 버전이 필요하다는 오류 메시지가 나타났습니다.이 버전은/usr/local/bin,/usr/local/include 및/usr/local/lib에 설치되었습니다 (버전 2.5.3). Freetype2 (2.3.11)의 이전 버전은/usr/bin,/usr/include/freetype2/freetype 및/usr/lib에 있습니다.CentOS 6.5에 Matplotlib 설치

matplotlib (python setup.py 빌드)를 설치하면 포함 경로가 모두 Freetype2의 잘못된 (이전) 버전을 가리키고있는 것처럼 보입니다. 적절한 경로를 변경하는 방법을 알 수 없습니다. Freetype2의 최신 버전을 가리 킵니다. 실제 오류 메시지는 아래에 있으며, 꽤 엉망입니다. 온라인에서 오류를 많이 발견하지 못했지만 Freetype2 경로가 잘못 표시되어 문제의 원인이 무엇인지 짐작할 수 있습니다. 어떤 팁?

/usr/local/include/freetype2를 가리 키도록/usr/include/freetype symlink를 추가하는 것에 대한 다른 스레드에 대한 팁이 있지만 도움이되지 않았습니다.

building 'matplotlib.ft2font' extension 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c src/ft2font.cpp -o build/temp.linux-x86_64-2.7/src/ft2font.o 
In file included from /usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1761:0, 
       from /usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17, 
       from src/file_compat.h:7, 
       from src/ft2font.cpp:7: 
/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] 
In file included from src/ft2font.cpp:7:0: 
src/file_compat.h:31:0: warning: "npy_fseek" redefined [enabled by default] 
/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include/numpy/npy_common.h:86:0: note: this is the location of the previous definition 
src/file_compat.h:32:0: warning: "npy_ftell" redefined [enabled by default] 
/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include/numpy/npy_common.h:91:0: note: this is the location of the previous definition 
src/ft2font.cpp: In member function ‘Py::Object FT2Image::py_write_bitmap(const Py::Tuple&)’: 
src/ft2font.cpp:184:15: warning: unused variable ‘offset’ [-Wunused-variable] 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c src/mplutils.cpp -o build/temp.linux-x86_64-2.7/src/mplutils.o 
In file included from /usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7/Python.h:8:0, 
       from src/mplutils.h:18, 
       from src/mplutils.cpp:6: 
/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7/pyconfig.h:1182:0: warning: "_POSIX_C_SOURCE" redefined [enabled by default] 
/usr/include/features.h:162:0: note: this is the location of the previous definition 
/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7/pyconfig.h:1204:0: warning: "_XOPEN_SOURCE" redefined [enabled by default] 
/usr/include/features.h:164:0: note: this is the location of the previous definition 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c extern/CXX/cxxsupport.cxx -o build/temp.linux-x86_64-2.7/extern/CXX/cxxsupport.o 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c extern/CXX/cxx_extensions.cxx -o build/temp.linux-x86_64-2.7/extern/CXX/cxx_extensions.o 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c extern/CXX/IndirectPythonInterface.cxx -o build/temp.linux-x86_64-2.7/extern/CXX/IndirectPythonInterface.o 
gcc -pthread -fno-strict-aliasing -O3 -m64 -mfpmath=sse -msse2 -mtune=generic -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DPYCXX_ISO_CPP_LIB=1 -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib/python2.7/site-packages/numpy/core/include -I/usr/include/freetype2 -I/usr/local/include -I/usr/include -I. -Iextern -I/usr/local/python2/2.7.8/x86_64/gcc46/nonet/include/python2.7 -c extern/CXX/cxxextensions.c -o build/temp.linux-x86_64-2.7/extern/CXX/cxxextensions.o 
g++ -pthread -shared build/temp.linux-x86_64-2.7/src/ft2font.o build/temp.linux-x86_64-2.7/src/mplutils.o build/temp.linux-x86_64-2.7/extern/CXX/cxxsupport.o build/temp.linux-x86_64-2.7/extern/CXX/cxx_extensions.o build/temp.linux-x86_64-2.7/extern/CXX/IndirectPythonInterface.o build/temp.linux-x86_64-2.7/extern/CXX/cxxextensions.o -L/usr/local/lib -L/usr/local/lib64 -L/usr/lib -L/usr/lib64 -L/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib -lfreetype -lstdc++ -lm -lpython2.7 -o build/lib.linux-x86_64-2.7/matplotlib/ft2font.so 
/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libpython2.7.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
error: command 'g++' failed with exit status 1 
+0

내가 그 FreeType에서의 SYM 링크를 제거합니다 :

root, 형식으로 기록. 그렇지 않으면 파이썬 2.7 설치 오류가있는 것 같습니다. 2.6과 비교해볼 수 있습니까? – daryl

+0

여기 가능한 해결책을 찾은 것 같습니다 : https://groups.google.com/forum/#!topic/modwsgi/Ev4iULHB3ms Python을 빌드 할 때 configure 스크립트에 --enable-shared 옵션을 포함하는 것 같습니다. 이 문제를 해결하십시오. 여러 사용자가 언제든지 사용할 수있는 클러스터에 있기 때문에 처음부터 다시 파이썬을 빌드하는 것은 어려울 것입니다 ... 제가 재 설치를 시도 할 수 있다면 업데이트 할 것입니다. – commanderdata

답변

1

나는 마침내 이것으로 돌아갈 시간이 있었으며 Freetype와는 아무런 관련이 없었다. 문제는 빌드 중에 libpython2.7의 잘못된 버전이 선택되었습니다. 특히이 라인 :

g++ -pthread -shared build/temp.linux-x86_64-2.7/src/ft2font.o build/temp.linux-x86_64-2.7/src/mplutils.o build/temp.linux-x86_64-2.7/extern/CXX/cxxsupport.o build/temp.linux-x86_64-2.7/extern/CXX/cxx_extensions.o build/temp.linux-x86_64-2.7/extern/CXX/IndirectPythonInterface.o build/temp.linux-x86_64-2.7/extern/CXX/cxxextensions.o -L/usr/local/lib -L/usr/local/lib64 -L/usr/lib -L/usr/lib64 -L/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib -lfreetype -lstdc++ -lm -lpython2.7 -o build/lib.linux-x86_64-2.7/matplotlib/ft2font.so 

첫 번째 -L 디렉토리 나에 대해 컴파일되어 있어야합니다 것보다 파이썬 라이브러리 (libpython2.7.a)의 다른 버전을 포함/usr/지방/lib 디렉토리입니다.이 파일을 임시로 옮긴 다음 빌드가 성공했습니다 (/usr/local/python2/2.7.8/x86_64/gcc46/nonet/lib에 올바른 버전이 있음).

나는/usr/local/lib에있는 파이썬 lib가 어디에서 유래했는지 정확히 알지 못한다. 그것이 시스템 버전이라면 matplotlib 빌드 스크립트에서 버그로 간주 될 수 있습니다.

+0

나는 또한이 문제에 직면 해있다. Matplotlib에서 접두사/파이썬 버전을 설정하는 방법이 있습니까? – hlin117

+0

나는 알고있다. – commanderdata

1

내가 파이썬 2.6를 사용하고 있지만 난 그냥 똑같은 FreeType에서 오류를 통해 방법을 bodged : 기본적으로 당신이 간단하게하기 matplotlib 파이썬 아카이브를 다운로드하고 FreeType에서-2.4 FREETYPE-2.3을하기위한 요구 사항을 편집 할 수 있습니다. 이것은 모두 가상으로 자연스럽게 이루어졌습니다.

  1. 는 --download를 설치 PIP 현재 최신하기 matplotlib

    의 사본을 얻을. 결과의 압축을 풉니 다하기 matplotlib의 == 1.4.0

  2. 타르 -xzvf하기 matplotlib-1.4.0.tar.gz

  3. 편집 2.4에서 2.3 FreeType에서에 대한 명시적인 요구 사항 (라인 945)

    VI하기 matplotlib 1.4.0/setupext.py

    MIN_VERSION = '2.4', 버젼 = 버전)

  4. 다시 보관

    012,351 6,

    타르 -czvf하기 matplotlib-1.4.0.tar.gz

  5. 설치 핍 요구 사항 설치 NumPy와

    귀하의 지역 수정 설치 geojson의 ==에게 1.0.6

  6. 를 설치 PIP 보관하고보고 컴파일 할 때

    pip 설치 --verbose matplotlib-1.4.0.tar.gz

+0

이 글은 Freetype 2.3이 잘되어야한다고 가정하는 이유입니다. 1. https://github.com/mdboom/matplotlib/commit/96a3ea27cb0525704eacbe1b483a2479cdad19dc –

+0

이렇게 해보지도 않았습니다. 모든 테스트를 통과합니까? 개발자가 필요하지 않은 경우 2.4를 시행 할 것인지 궁금하다. 이것에 시간을 할애 해 주셔서 감사 드리며, 앞으로 며칠간 언젠가는 시도해 보시고, 어떻게 진행되는지 알려 드리겠습니다. – commanderdata

+0

나는 이것들 만 돌렸고, 13 가지 실패가있었습니다. 그들은 정확히 무엇인지 모르겠다 : (matplotlibcopy) $ python ./tests.py -sv --processes = 5 --process-timeout = 300 425.891s의 Ran 4663 테스트 FAILED (KNOWNFAIL = 378, SKIP = 8) , errors = 2, failure = 13) –

0

matplotlib-1.4.3을 소스 코드에서 컴파일 할 때도이 문제가 발생합니다. 이 오류가 발생하면 간단히 export LDFLAGS="/home/ubuntu/softwares/python-2.7.11/lib", 그 다음 python setup.py install입니다. 오류가 사라지고 matplotlib를 성공적으로 설치할 수 있습니다. 경우

0

당신이 CentOS는 (현재 6.9 내가 쓴) 6 파이썬 2.6 호환 matplotlib의 최신 버전을 설치하려면, 여기에 내가 한 방법입니다. 아마 시스템에 다른 문제를 일으킬 것 같은

sudo yum install -y epel-release 
sudo yum install -y python-pip 
sudo yum install -y gcc gcc-c++ python-argparse python-devel freetype-devel libpng-devel 
pip install --upgrade pip 
pip install numpy==1.11.3 # latest version working with Python 2.6 
pip install --upgrade distribute # required by matplotlib 1.4 
pip install -I setuptools # "distribute" installation will remove setuptools, so we need to reinstall it 
pip install matplotlib==1.4.3 # latest version working with Python 2.6