您需要实际安装 readline,而不仅仅是下载它,然后使用and指向rpy2
它。CFLAGS
LDFLAGS
试试这个方法。它几乎对我有用 - 我有同样的问题,除了 rpy2 似乎链接到系统 R 而不是我的 homedir 安装的额外皱纹。
首先,我将 readline 下载到~/src/readline-6.2
,并使用./configure --prefix=$HOME && make && make install
. (您需要将它安装在某个地方,而不仅仅是下载源代码。)
然后我用
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
ssite-packages/rpy2
链接到右侧libreadline
……但指向系统R
,而不是我的,尽管有明确的--r-home
.