没有管理员权限安装rpy2

时间:2013-02-10 04:01:10

标签: python r gcc rpy2

我在安装Python包rpy2时遇到问题。我已经将R编译为共享库,但我没有管理员权限,因此我尝试使用以下命令安装rpy:

pip install -user rpy2

但是,我收到以下错误:

  

./ rpy / rinterface / _rinterface.c:86:31:致命错误:   readline / readline.h:没有这样的文件或目录

     

编译终止。

     

错误:命令'gcc'因退出状态1而失败

我已将readline下载到:

/some/path/readline-6.2/

我可以看到readline.h(我还编译了readline以防万一)

我的问题:

如何使用rpy2使readline.h(或pip)知道此位置以避免标头编译错误?

4 个答案:

答案 0 :(得分:2)

您需要实际安装readline,而不仅仅是下载它,然后使用rpy2CFLAGSLDFLAGS指向它。

尝试这种方法。它几乎对我有用 - 我有同样的问题,除了rpy2似乎与系统R而不是我的homedir安装链接的额外皱纹。

首先,我将readline下载到~/src/readline-6.2,并将其与./configure --prefix=$HOME && make && make install一起安装。 (您需要在某处安装它,而不仅仅是下载源。)

然后我用

重新编译了R.
CPPFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME --enable-BLAS-shlib --enable-R-shlib
make
make install

R现在肯定正在使用该readline:

$ ldd ~/lib64/R/lib/libR.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007f8104207000)

对于我的家庭内部安装Python(3.2.3,因为h5py还不能与3.3一起使用)相同:

CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME
make
make install

再次:

$ ldd ~/lib/python3.2/lib-dynload/readline.cpython-32m.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007fbfff5c2000)

然后我下载了rpy2源并构建了:

CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
python3 setup.py build --r-home $HOME/lib64/R install

这似乎很成功,并且ldd .so位于site-packages/rpy2的{​​{1}}链接到右libreadline ...但是系统R我的,尽管明确--r-home

答案 1 :(得分:1)

更简单:

yum install readline-devel.x86_64

在centos 7上为我奔跑

对于debian / ubuntu

apt-get install libreadline-dev

答案 2 :(得分:-2)

在linux中的某个时候需要sudo apt-get升级,以获取新闻库,可能会起作用

答案 3 :(得分:-2)

这是另一种选择,但你也需要root权限......      sudo apt-get install libreadline-dev