我试着用pip(在Ubuntu 12.04上)把rpy2安装在热情的树冠上。软件包似乎安装成功,但当我尝试导入时:
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),ipython笔记本中的R\u magic就不起作用!
似乎rpy2链接到了系统的gfortran库,同时热情地试图加载自己的FORTRAN库!类似的问题也被报道here。ldu预加载是一个不错的解决方案,因为发布热情洋溢的FORTRAN库有什么意义!?
这似乎又是一个与linux(Ubuntu)中的GFORTRAN库相冲突的热情洋溢的FORTRAN库!与Enthough一起提供的库要么是错误的,要么是没有合适的方法来解决这个冲突。不管怎样,对于一个主要关注科学计算的发行版来说,一次又一次地发生这样的冲突是不好的!
最佳答案
对于自定义包,我在libgfortran
和libblas
中遇到了相同的错误。正如您所提到的,Canopy正在使用它自己的libgfortran.so.3
,跟踪系统或库路径中的那个(似乎是blas
所必需的)。下面是一个解决此问题和类似问题的方法,它基于更改树冠中的libgfortran
符号链接:
导航到Canopy的lib目录:cd ~/Enthought/Canopy_64bit/User/lib/
一个ls -l *gfortran.so.3*
应该给你这样的东西:
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
从系统到库建立符号链接
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
相关SO帖子:libgfortran: version `GFORTRAN_1.4' not found
关于python - “rpy2”在“思想冠层”中失败(与内部GFORTRAN库冲突),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21011235/