I am new to R. I am running Jupyter Lab on a Windows 11 machine, and have created a virtual environment where I installed some packages and irkernel. I get the following message when I execute %load_ext rpy2.ipython
:
Unable to determine R library path: Command '('C:\Users\ephra\miniconda3\envs\cde\Lib\R\bin\Rscript', '-e', 'cat(Sys.getenv("LD_LIBRARY_PATH"))')' returned non-zero exit status 1.
Here is my complete code:
import os os.environ['R_HOME'] = 'C:\Users\ephra\miniconda3\envs\cde\Lib\R' os.environ['R_USER'] = 'C:\Users\ephra\miniconda3\envs\cde\Lib\site-packages\rpy2' from src.setup import * %load_ext rpy2.ipython %%R library(tidyverse)
Apart from the environment variables, the above code comes from David Mertz book “Cleaning Data for Effective Data Science”. I need your help.
Advertisement
Answer
Note: This is a speculative answer as I don’t use Jupyter
That os.environ
trick works for me in plain Python but Jupyter’s magic routine %load_ext rpy2.ipython
utilizes LD_LIBRARY_PATH
to set itself up. The error comes from the fact that LD_LIBRARY_PATH
is Linux/Unix thing hence the trouble.
Failed Attempt #1
What you may be able to do is to add the following line to your os.environ
calls:
os.environ['LD_LIBRARY_PATH'] = 'C:\Users\ephra\miniconda3\envs\cde\Lib\R\bin\x64'
Assuming ‘C:Usersephraminiconda3envscdeLibRbin’ exists. If not, look for a R subfolder with bunch of exe and dll files.
Attempt #2
Surveying further, I noticed that LD_LIBRARY_PATH
itself is never used by rpy2
, and it appears to be a Linux workaround. So, what happens if you comment out Lines 26-28 of Libsite-packagesrpy2rinterface_libopenrlib.py
?
The lines should read
LD_LIBRARY_PATH = (rpy2.situation.r_ld_library_path_from_subprocess(R_HOME) if R_HOME is not None else '')
If this hack succeeds, let me know and I can file a PR.