【问题标题】:Rpy2 not finding packageRpy2找不到包
【发布时间】:2015-04-06 17:09:43
【问题描述】:

我在 Windows 7 64 上使用 Rpy2 并且无法加载包:

在 R 中:

using(mi)

在python中:

from rpy2.robjects.packages import importr
mi=importr('mi')

---------------------------------------------------------------------------
RRuntimeError                             Traceback (most recent call last)
<ipython-input-30-2d393a6df544> in <module>()
----> 1 mi=importr('mi')

C:\Anaconda\lib\site-packages\rpy2\robjects\packages.pyc in importr(name, lib_loc, robject_translations, signature_translation, suppress_messages, on_conflict, data)
    397     if _package_has_namespace(rname, 
    398                               _system_file(package = rname)):
--> 399         env = _get_namespace(rname)
    400         version = _get_namespace_version(rname)[0]
    401         exported_names = set(_get_namespace_exports(rname))

RRuntimeError: Error in loadNamespace(name) : there is no package called 'm

有什么建议吗?

【问题讨论】:

标签: python rpy2


【解决方案1】:

我遇到了类似的问题。我必须卸载 R 并以管理员权限重新安装它,然后在以管理员权限运行 R 时重新安装 R 包,因此它将安装到标准库位置(而不是个人库)。然后将 R 添加到 PATH 变量中,然后重新安装 rpy2。

【讨论】:

    【解决方案2】:

    在python中:检查rpy2使用的R版本

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

    检查你的 rpy2 库位置

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

    在 R 中:检查此版本的 r 的 R 库位置

    .libPaths()
    

    将安装在您的 r 版本中的库复制到 rpy2 使用的文件夹中。

    【讨论】:

      【解决方案3】:

      我也有这个问题,我把我需要的包复制到base._libPaths(),在这里,它可以工作了。

      import rpy2.robjects as objects
      from rpy2.robjects.packages import importer
      base = importr('base')
      base._libPaths()[0]
      

      【讨论】:

        【解决方案4】:

        对我来说,在 importr 中,其中的参数 lib_loc 起作用,将出现的 first 路径在 R 中 .libPaths() 的输出中,例如:

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

        其中路径是@Nbarjest 答案的输出示例中的路径。

        【讨论】:

          【解决方案5】:

          我也遇到过类似的问题:

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

          我注意到问题在于 rpy2 不知道所有 R 库的位置。在我的情况下,输入(R)

          .libPaths()
          

          给我

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

          同时,键入(在 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())
          

          只给我

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

          我找不到将其他两个路径附加到 base._libpath() 的方法。如果你找到办法做到这一点,请告诉我。我使用了另一种解决方法:

          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")
          

          这行得通。我希望其他有同样问题的人觉得这很有用。

          【讨论】:

          • 为了在 Python3 中获取库路径,使用上面的代码 sn-p 时出现错误。为了解决这个问题,我只需要删除第二行:# rpy2.rinterface.set_initoptions((b'rpy2', b'--no-save', b'--no-restore', b'--quiet'))
          【解决方案6】:

          这是在 rpy2 的问题跟踪器上交叉发布和回答的:https://bitbucket.org/rpy2/rpy2/issue/265/windows-error-in-loadnamespace

          【讨论】:

          • 那里没有回答,因为那里没有真正有效的解决方案。
          猜你喜欢
          • 2016-09-04
          • 2012-01-07
          • 2016-01-04
          • 2021-07-05
          • 2015-07-04
          • 2021-02-06
          • 1970-01-01
          • 1970-01-01
          • 2012-03-14
          相关资源
          最近更新 更多