R从源构建,在本地安装。 R位于~/bin/R
(位于我的PATH中),其库位于~/lib64/R/
。安装rpy2应该很简单。它找到正确的R就好了(因为它在路径中)。然后它找不到库。
$python setup.py build install
R version 3.2.1 (2015-06-18) -- "World-Famous Astronaut"
...
setup.py:211: UserWarning: No include specified
warnings.warn('No include specified')
setup.py:222: UserWarning: No libraries as -l arguments to the compiler.
warnings.warn('No libraries as -l arguments to the compiler.')
Compilation parameters for rpy2's C components:
include_dirs = []
library_dirs = []
libraries = []
extra_link_args = []
然后我们得到一百万个错误,它无法找到R库中的函数。
Rpy2的documentation says有一个简单的选项来指定R或其库的位置:
python setup.py build --r-home ~/lib64/R/lib install
但如果你这样做,那么你得到:
setup.py:222: UserWarning: No libraries as -l arguments to the compiler.
warnings.warn('No libraries as -l arguments to the compiler.')
Compilation parameters for rpy2's C components:
include_dirs = []
library_dirs = []
libraries = []
extra_link_args = []
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: option --r-home not recognized
看起来--r-home
功能已被删除。如何将rpy2指向正确的库?
编辑:
现在安装了R:
./configure --prefix=${HOME} --enable-R-shlib
make
make install
之后,我可以用pip install rpy2
安装rpy2。但是,我们仍然遇到了图书馆问题:
import rpy2.robjects as robjects
ImportError: libRblas.so: cannot open shared object file: No such file or directory
那么我需要将其添加到我的路径中:
export LD_LIBRARY_PATH="~/lib64/R/lib:$LD_LIBRARY_PATH"
然后一切正常!
答案 0 :(得分:1)
如果R位于非常规位置,最简单的可能是通过设置环境变量来帮助一点(旧版本的doc正在讨论--r-home
,但这是一个经过较少测试的角落并且已被删除)。
尝试:
export PATH=~/bin/R:${PATH}
export LD_LIBRARY_PATH=~/lib64/R/lib:${LD_LIBRARY_PATH}
export PKG_CONFIG_PATH=~/lib64/R/lib/pkgconfig/:${PKG_CONFIG_PATH}
答案 1 :(得分:1)
我在安装过程中使用以下相对路径使用非标准R位置构建rpy2取得了最佳成功:
export LDFLAGS="-Wl,-rpath,~/lib64/R/lib"
请注意,您只需要在终端中将其导出,然后运行python setup.py install
而不是.bashrc
等。它会将此库路径存储在rpy2编译的部分中。
这是一个比LD_LIBRARY_PATH
更好的选择,有些人认为这是邪恶的:
Preserving whitespace in PDF after XSL transform
https://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the