2014-01-09 6 views
2

ubuntu canopy에서 rup2를 pip (우분투 12.04에서)를 사용하여 설치하려고했습니다. 패키지가 성공적으로 설치하는 것 같다하지만 난 때를 가져올이없이"rpy2"가 Enthought Canopy에서 실패 함 (내부 GFORTRAN 라이브러리와 충돌 함)

In [1]: from rpy2.rinterface._rinterface import * 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-e2e1fe174266> in <module>() 
----> 1 from rpy2.rinterface._rinterface import * 

/home/kayhan/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/rpy2-2.3.8-py2.7-linux-x86_64.egg/rpy2/rinterface/__init__.py in <module>() 
    99 
    100 
--> 101 from rpy2.rinterface._rinterface import * 
    102 
    103 

ImportError: /home/kayhan/Enthought/Canopy_64bit/User/bin/../lib/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/libblas.so.3gf) 

이 패키지 (RPY2), R_magic이 ipython-참고 책에서 작동하지 않습니다!

Enthought가 자체 FORTRAN 라이브러리를로드하려고 시도하는 동안 rpy2가 시스템의 gfortran 라이브러리와 연결되어있는 것으로 보입니다! 비슷한 문제가 here으로보고되었습니다. LD_PRELOAD는 적절한 솔루션입니다. 왜냐하면 Enthought FORTRAN 라이브러리를 출하 할 시점이 무엇입니까?

리눅스 (우분투)의 GFORTRAN 라이브러리와 충돌하는 또 다른 Enthought FORTRAN 라이브러리가있는 것처럼 보입니다! Enthough와 함께 제공되는 라이브러리에 결함이 있거나이 충돌을 해결할 적절한 방법이 없습니다. 어느 쪽이든, 과학적 컴퓨팅을 주된 목표로하는 배포판 (Enthought)에 대해 계속해서 그런 갈등을 반복하는 것은 바람직하지 않습니다!

+0

바이너리를'ldd'하여 그들이 링크되어있는 라이브러리와 링크되어있는 라이브러리를 확인하십시오. – adrin

+0

나는 그것을했다. 그것은 Enthought가 아닌 시스템의 GFORTRAN 라이브러리에 링크되어 있는데, 어떤 라이브러리를 링크 할 지 설치 프로그램을 지정할 수 있습니까? – kayhan

+0

물론 가능합니다. 라이브러리 경로를 설정해야합니다. 'configure' 입력 매개 변수 또는'LD_LIBRARY_PATH' 환경 변수를 통해. 자세한 내용은 [here] (http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html)를 참조하십시오. – adrin

답변

4

사용자 정의 패키지에 대해 libgfortran 및 과 동일한 오류가 발생했습니다. Canopy가 자신의 libgfortran.so.3을 사용하고 있다고 언급했듯이 시스템이나 라이브러리 경로에 그림자가있는 것으로 보입니다 (외관상은 blas 필요).

cd ~/Enthought/Canopy_64bit/User/lib/

ls -l *gfortran.so.3* 같이 당신에게 무언가를 제공해야합니다 : 숲의 lib 디렉토리에

이동 : 여기에 이것과 비슷한 문제를, 숲에서 libgfortran 심볼릭 링크를 변경에 따라 해결 방법은

libgfortran.so.3 -> libgfortran.so.3.0.0 
libgfortran.so.3.0.0 

(선택적) (이 같은 심볼릭 링크는 여기되지 않습니다 경우) libgfortran.so.3의 백업을합니다

,
mv libgfortran.so.3 libgfortran.so.3.bkp 

시스템 라이브러리를 찾아 예 :

locate *gfortran.so.3* | grep /usr/lib 

/usr/lib/x86_64-linux-gnu/libgfortran.so.3 
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0 

이 lib 디렉토리에 시스템에서 심볼릭 링크를 확인

ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 . 

지금 ls -l *gfortran.so.3* 당신에게 제공해야합니다 :

libgfortran.so.3 -> /usr/lib/x86_64-linux-gnu/libgfortran.so.3 

관련 게시물 : libgfortran: version `GFORTRAN_1.4' not found