Search code examples
pythonrjupyter-notebookanacondarpy2

OSError: cannot load library 'C:\Program Files\R\R-4.0.2\bin\x64\R.dll': error 0x7e


I am trying to import the rpy2 library into a Jupyter Notebook but I cannot get past this error.

The PATH 'C:\Program Files\R\R-4.0.2\bin\x64' has been added.

This is the only version of R installed on my computer. I have completely uninstalled and reinstalled R/Rstudio/Anaconda with no luck.

Here is the full error:

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-7-098f0d39b3a3> in <module>
----> 1 from rpy2.robjects import pandas2ri

C:\Anaconda\lib\site-packages\rpy2\robjects\__init__.py in <module>
     14 from functools import partial
     15 import types
---> 16 import rpy2.rinterface as rinterface
     17 import rpy2.rlike.container as rlc
     18 

C:\Anaconda\lib\site-packages\rpy2\rinterface.py in <module>
      4 import typing
      5 from typing import Union
----> 6 from rpy2.rinterface_lib import openrlib
      7 import rpy2.rinterface_lib._rinterface_capi as _rinterface
      8 import rpy2.rinterface_lib.embedded as embedded

C:\Anaconda\lib\site-packages\rpy2\rinterface_lib\openrlib.py in <module>
     42     rlib = _rinterface_cffi.lib
     43 else:
---> 44     rlib = _dlopen_rlib(R_HOME)
     45 
     46 

C:\Anaconda\lib\site-packages\rpy2\rinterface_lib\openrlib.py in _dlopen_rlib(r_home)
     35         raise ValueError('The library path cannot be None.')
     36     else:
---> 37         rlib = ffi.dlopen(lib_path)
     38     return rlib
     39 

OSError: cannot load library 'C:\Program Files\R\R-4.0.2\bin\x64\R.dll': error 0x7e

edit:

Here is the code I run to import rpy2 library:

from rpy2.robjects import r, pandas2ri

Solution

  • 1 - Windows + IDE

    For those not using Anaconda, add the following in Windows' environment variables PATH:

    C:\Program Files\R\R-4.0.3\bin\x64

    Your R version may differ from "R-4.0.3"

    2 - Anaconda

    Otherwise, check Grayson Felt's reply:

    I found a solution here.

    Adding the PATH

    C:\Users\username\Anaconda2;C:\Users\username\Anaconda2\Scripts;C:\Users\username\Anaconda2\Library\bin;C:\Users\username\Anaconda2\Library\mingw-w64\lib;C:\Users\username\Anaconda2\Library\mingw-w64\bin

    and subsequently restarting Anaconda fixed the issue.

    3 - Code header Windows basic

    Alternatively, following Bruno's suggestion (and being more sohpisticated):

    try:
        import rpy2.robjects as robjects
    except OSError as e:
        try:
            import os
            import platform
            if ('Windows', 'Microsoft') in platform.system():
                os.environ["R_HOME"] = 'C:/Program Files/R/R-4.0.3/bin/x64'  # Your R version here 'R-4.0.3'
                os.environ["PATH"] = "C:/Program Files/R/R-4.0.3/bin/x64" + ";" + os.environ["PATH"]
            import rpy2.robjects as robjects
        except OSError:
            raise(e)
    

    This code won't be effective for non-Windows platform. Also adjustments may be necessary for different R versions. If it gets more complicated than this, you should probably just go for solutions 1 or 2.

    NOTE: You may also face this issue if your Python and R versions are in different architechtures (x86 vs x64)