【发布时间】:2015-09-04 11:00:15
【问题描述】:
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"
然后一切正常!
【问题讨论】:
-
@Hack-R 为什么?我不明白这有什么关系。
-
@Hack-R 这不是我的问题所在。我在询问安装 Rpy2,以及在安装时它需要如何知道 R 的位置及其相关材料。此时 Rpy2 甚至没有安装。
-
您是否将 R 编译为共享库?另外,你不做
pip install rpy2的任何原因? -
"您是否将 R 编译为共享库?"我不知道你的意思。我在没有 root 权限的情况下编译了它,所有内容都在我的 ~/ 目录中。我没有使用
pip install rpy,因为它产生了相同的错误,而且我认为从源代码构建会打开我原本不会拥有的编译选项(例如--r-home)。 -
在配置步骤中,使用
./configure --enable-R-shlib。我还看到您有libRblas.so、libRlapacks.so,但没有libR.so。可能会准确地分享你如何编译 R 会给可能发生的事情提供有用的提示......