我嘗試使用pip(在Ubuntu 12.04上)在Enthought Canopy上安裝rpy2。該軟件包似乎已成功安裝,但是當我試圖將其導入:Enthought Canopy中的「rpy2」失敗(與內部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中,記事本不工作!
似乎rpy2鏈接到系統的gfortran庫,而Enthought試圖加載它自己的FORTRAN庫!報道了類似的問題here。 LD_PRELOAD是一個體面的解決方案,因爲運送Enthought FORTRAN庫的意義何在!
它似乎又一個Enthought FORTRAN庫與Linux(Ubuntu)中的GFORTRAN庫衝突! Enthough提供的圖書館都有問題,或者沒有體面的方式來解決這個衝突。無論哪種方式,對於主要關注科學計算的分佈(Enthought)來說,一遍又一遍地發生這樣的衝突是不好的!
嘗試對二進制文件進行「ldd」查看它們鏈接到的庫與它們應該鏈接到的庫。 – adrin
我做到了。它鏈接到系統的GFORTRAN庫,不是Enthought的,但是我可以爲安裝程序指定哪些庫鏈接到? – kayhan
當然可以,您需要設置庫路徑。通過'configure'輸入參數或'LD_LIBRARY_PATH'環境變量。看[這裏](http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html)瞭解更多詳情。 – adrin