- Python: version 3.6 provided by latest
miniconda3
, installed to/opt
- R: Microsoft Open R version 3.4.2, installed to
/opt
- rpy2: version 2.9.2
- Do not install from
conda
. At least try installing frompip
. Even better, download the source code and runpython setup.py install
- Initial installation failed, complaining something about
RBuild.h
not found. To fix, add in~/.bashrc
orexport
to bash something like:
export CPLUS_INCLUDE_PATH=/opt/microsoft/ropen/3.4.2/lib64/R/include:$HOME/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include
export C_INCLUDE_PATH=/opt/microsoft/ropen/3.4.2/lib64/R/include:$HOME/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include
- Installation works for me, but after that
python -m "rpy2.tests"
failed with
/miniconda3/lib/python3.6/site-packages/rpy2-2.9.2-py3.6-linux-x86_64.egg/rpy2/rinterface/_rinterface.cpython-36m-x86_64-linux-gnu.so: undefined symbol: R_NilValue
Checking on this file:
$ ldd _rinterface.cpython-36m-x86_64-linux-gnu.so
linux-vdso.so.1 (0x00007ffef73ec000)
libpython3.6m.so.1.0 => /home/gaow/Public/miniconda3/lib/libpython3.6m.so.1.0 (0x00002b7c3a205000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00002b7c3a72c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00002b7c3a949000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00002b7c3ace8000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00002b7c3aeee000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00002b7c3b0f1000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00002b7c3b2f9000)
/lib64/ld-linux-x86-64.so.2 (0x000055abdbd09000)
Obviously libR.so
is not linked.
- Tried to set proper
LD_LIBRARY_PATH
, did not work. - Removed installation intermediate output and run installer again:
rm -rf dist build
python setup.py install
and read the screen output I locked on these lines:
gcc -pthread -shared -L/miniconda3/lib -Wl,-rpath=/miniconda3/lib,--no-as-needed build/temp.linux-x86_64-3.6/./rpy/rinterface/_rinterface.o -L/miniconda3/lib -Lbuild/temp.linux-x86_64-3.6 -lpython3.6m -lr_utils -o build/lib.linux-x86_64-3.6/rpy2/rinterface/_rinterface.cpython-36m-x86_64-linux-gnu.so
gcc -pthread -shared -L/miniconda3/lib -Wl,-rpath=/miniconda3/lib,--no-as-needed build/temp.linux-x86_64-3.6/./rpy/rinterface/_rpy_device.o -L/miniconda3/lib -Lbuild/temp.linux-x86_64-3.6 -lpython3.6m -lr_utils -o build/lib.linux-x86_64-3.6/rpy2/rinterface/_rpy_device.cpython-36m-x86_64-linux-gnu.so
I added -L/opt/microsoft/ropen/3.4.2/lib64/R/lib -lR
to them, and run:
gcc -pthread -shared -L/miniconda3/lib -Wl,-rpath=/miniconda3/lib,--no-as-needed build/temp.linux-x86_64-3.6/./rpy/rinterface/_rinterface.o -L/miniconda3/lib -Lbuild/temp.linux-x86_64-3.6 -lpython3.6m -lr_utils -lR -L/opt/microsoft/ropen/3.4.2/lib64/R/lib -o build/lib.linux-x86_64-3.6/rpy2/rinterface/_rinterface.cpython-36m-x86_64-linux-gnu.so
gcc -pthread -shared -L/miniconda3/lib -Wl,-rpath=/miniconda3/lib,--no-as-needed build/temp.linux-x86_64-3.6/./rpy/rinterface/_rpy_device.o -L/miniconda3/lib -Lbuild/temp.linux-x86_64-3.6 -L/opt/microsoft/ropen/3.4.2/lib64/R/lib -lpython3.6m -lr_utils -lR -o build/lib.linux-x86_64-3.6/rpy2/rinterface/_rpy_device.cpython-36m-x86_64-linux-gnu.so
Then I check them:
$ ldd build/lib.linux-x86_64-3.6/rpy2/rinterface/_rpy_device.cpython-36m-x86_64-linux-gnu.so
linux-vdso.so.1 (0x00007fff67190000)
libpython3.6m.so.1.0 => /home/gaow/Public/miniconda3/lib/libpython3.6m.so.1.0 (0x00002b20d3df7000)
libR.so => /opt/microsoft/ropen/3.4.2/lib64/R/lib/libR.so (0x00002b20d42fe000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00002b20d6405000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00002b20d6622000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00002b20d69c3000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00002b20d6bc7000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00002b20d6dca000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00002b20d6fd2000)
libRblas.so => /opt/microsoft/ropen/3.4.2/lib64/R/lib/libRblas.so (0x00002b20d72d6000)
libgfortran.so.1 => /opt/microsoft/ropen/3.4.2/lib64/R/lib/libgfortran.so.1 (0x00002b20da7f5000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00002b20daa8e000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00002b20dae10000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00002b20db03d000)
/lib64/ld-linux-x86-64.so.2 (0x000055abe1374000)
looking good.
- Run again:
python setup.py install
then
python -m "rpy2.tests"
to see it work.
this issue is related to a bug in Microsoft openR recently discussed. See this post.