Rpy2 not finding package

后端 未结 5 1021
时光说笑
时光说笑 2021-02-04 13:43

I\'m using Rpy2 on windows 7 64 and having trouble loading a package:

in R:

using(mi)

in python:

from rpy2.robjects         


        
相关标签:
5条回答
  • 2021-02-04 14:13

    For me, in importr, the argument lib_loc inside it worked, putting the first path that appears in the output of .libPaths() in R, like:

    importr('name package', lib_loc="/home/nbarjest/R/x86_64-redhat-linux-gnu-library/3.4"),

    where the path is the path in the output example of the @Nbarjest answer.

    0 讨论(0)
  • 2021-02-04 14:19

    I also have this problem,and i copy the package i need to base._libPaths() ,here , and it works.

    import rpy2.robjects as objects
    from rpy2.robjects.packages import importer
    base = importr('base')
    base._libPaths()[0]
    
    0 讨论(0)
  • 2021-02-04 14:21

    In python: Check the version of R being used by rpy2

    import rpy2.robjects as robjects
    robjects.r['version']
    
    

    Check your rpy2 library location

    base = importr('base')
    print(base._libPaths())
    

    In R: Check your R library location for this version of r

    .libPaths()
    

    copy the library installed in your version of r to the folder used by rpy2.

    0 讨论(0)
  • 2021-02-04 14:27

    I had a similar problem:

    rpy2.rinterface.RRuntimeError: Error in loadNamespace(name) : there is no package called speedglm
    

    I noticed that the issue is that rpy2 does not know the location of all R libraries. In my case, typing (in R)

    .libPaths()
    

    gave me

    [1] "/home/nbarjest/R/x86_64-redhat-linux-gnu-library/3.4"
    [2] "/usr/lib64/R/library"                                
    [3] "/usr/share/R/library" 
    

    While, typing (in Python 3)

    import rpy2.rinterface
    rpy2.rinterface.set_initoptions((b'rpy2', b'--no-save', b'--no-restore', b'--quiet'))
    from rpy2.robjects.packages import importr
    base = importr('base')
    print(base._libPaths())
    

    gave me only

    [1] "/home/nbarjest/R/x86_64-redhat-linux-gnu-library/3.4"
    

    I couldn't find a way to append the other two paths to base._libpath(). If you find a way to do it, please let me know. I used another workaround:

    import rpy2
    import rpy2.robjects as RObjects
    from rpy2.robjects.packages import importr
    utils = importr("utils")
    d = {'print.me': 'print_dot_me', 'print_me': 'print_uscore_me'}
    try:
        thatpackage = importr('speedglm', robject_translations = d, lib_loc = "/home/nbarjest/R/x86_64-redhat-linux-gnu-library/3.4")
    except:
        try:
            thatpackage = importr('speedglm', robject_translations = d, lib_loc = "/usr/lib64/R/library")
        except:
            thatpackage = importr('speedglm', robject_translations = d, lib_loc = "/usr/share/R/library")
    

    This works. I hope other people who have the same problem find this useful.

    0 讨论(0)
  • 2021-02-04 14:27

    This is was cross-posted, and answered, on the issue tracker for rpy2: https://bitbucket.org/rpy2/rpy2/issue/265/windows-error-in-loadnamespace

    0 讨论(0)
提交回复
热议问题