【问题标题】:Importing mgcv fails because Rlapack.dll cannot be found导入 mgcv 失败,因为找不到 Rlapack.dll
【发布时间】:2011-12-06 09:36:29
【问题描述】:

我想使用R.NET 库链接到 IronPython 中的 R 统计包。它一直运行良好,但现在我需要使用 R 的 mgcv 库。

导入mgcv 失败(使用命令rdn.r.EagerEvaluate("library(mgcv)") 完成导入,其中rdn 是包装R.NET 库的IronPython 对象)。导入失败时,Windows 会打开一个对话框,显示:“程序无法启动,因为您的计算机中缺少 Rlapack.dll。请尝试重新安装程序以解决此问题。”

当然,如果 Rlapack.dll 丢失,R 一开始就不会工作,那么发生了什么?

【问题讨论】:

  • 别担心回答这个问题;我已经解决了这个问题,并将在 SO 的锁定到期后的 8 小时内发布解决方案。
  • 我不知道 IronPython 在哪里寻找 Rlapack.dll,但 R 正在它自己的主目录中寻找它(.../R-2.x.x/bin/i386 或 /R -2.x.x/bin/x64 用于 64 位版本)。那不是 R 可执行文件的目录,也不是库的目录。将此添加到您的路径中可能会有所帮助。

标签: r ironpython


【解决方案1】:

我检查了mgcv 包的依赖关系;它们包括基本包Matrix。事实证明,Matrix 已被 R 开发团队编译为 dll(位于 ${R_HOME}/library/Matrix/libs/i386/Matrix.dll)。该 dll 需要链接到 Rlapack.dll,由于某种原因,在 IronPython 中从 R.NET 调用 R 时它无法找到该 dll。

解决方案是将 Rlapack.dll(您可以在 ${R_HOME}/bin/i386/ 中找到)的副本拖放到与 Matrix.dll 相同的目录中。现在每天都是星期天。

【讨论】:

    【解决方案2】:

    compositions.dll 也有同样的问题。

    因此,我没有将Rlapack.dll 复制到compositions.dll 所在的目录,而是将bin 目录添加到PATH

    string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
    if (string.IsNullOrEmpty(rhome))
        rhome = @"C:\Program Files\R\R-2.14.0";
    
    System.Environment.SetEnvironmentVariable("R_HOME", rhome);
    System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"\bin\i386");
    

    【讨论】:

    • 这很奇怪。在 Windows XP 中将 R bin 添加到 PATH 对我不起作用。但它适用于 Windows 7!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多