【问题标题】:Error: package or namespace load failed, object ... not found错误:包或命名空间加载失败,对象...未找到
【发布时间】:2018-07-05 00:26:39
【问题描述】:

我正在运行 R (3.5.0) 和 RStudio (1.1.414) 的新安装。 [注意我现在已经更新到 3.5.1 和 1.1.453,除了“在 R 版本 3.5.1 下构建”警告消息之外,我仍然遇到以下问题]

我已经使用install.packages("rlang") 安装了 rlang 包,没有遇到任何问题,但是当我尝试加载包时出现以下错误

Error: package or namespace load failed for ‘rlang’: .onLoad failed in loadNamespace() for 'rlang', details: call: dots_list(...) error: object 'rlang_dots_list' not found In addition: Warning message: package ‘rlang’ was built under R version 3.5.1

我已经卸载并重新安装了 rlang(在每个命令之间关闭重新启动 RStudio),但仍然遇到此错误。

我也遇到了一组与其他软件包类似(尽管可能完全不相关)的问题

  1. RStudio 每次启动都会提供以下警告

    [Workspace loaded from ~/.RData]
    
    Error in yaml.load(readLines(con), error.label = error.label, ...) : 
       object 'C_unserialize_from_yaml' not found
    Error in yaml.load(readLines(con), error.label = error.label, ...) : 
      object 'C_unserialize_from_yaml' not found
    
  2. library(devtools) 给出以下错误

    Error: package or namespace load failed for ‘devtools’ in FUN(X[[i]], ...):
     no such symbol digest in package //[redacted]/My 
    Documents/R/win-library/3.5/digest/libs/x64/digest.dll
    In addition: Warning message:
    package ‘devtools’ was built under R version 3.5.1 
    

推特上有人问packageDescription("rlang")的结果

我已经复制了下面的输出,以防它有助于故障排除。

Package: rlang
Version: 0.2.1
Title: Functions for Base Types and Core R and 'Tidyverse' Features
Description: A toolbox for working with base types, core R features like the condition system, and core
        'Tidyverse' features like tidy evaluation.
Authors@R: c( person("Lionel", "Henry", ,"lionel@rstudio.com", c("aut", "cre")), person("Hadley", "Wickham",
        ,"hadley@rstudio.com", "aut"), person("RStudio", role = "cph") )
License: GPL-3
LazyData: true
ByteCompile: true
Depends: R (>= 3.1.0)
Suggests: crayon, knitr, methods, pillar, rmarkdown (>= 0.2.65), testthat, covr
RoxygenNote: 6.0.1
URL: http://rlang.tidyverse.org, https://github.com/r-lib/rlang
BugReports: https://github.com/r-lib/rlang/issues
NeedsCompilation: yes
Packaged: 2018-05-30 13:14:55 UTC; lionel
Author: Lionel Henry [aut, cre], Hadley Wickham [aut], RStudio [cph]
Maintainer: Lionel Henry <lionel@rstudio.com>
Repository: CRAN
Date/Publication: 2018-05-30 14:23:07 UTC
Built: R 3.5.1; x86_64-w64-mingw32; 2018-07-02 15:08:55 UTC; windows

-- File: [redacted]/My Documents/R/win-library/3.5/rlang/Meta/package.rds 

【问题讨论】:

  • 您可以尝试在 R 中安装包(R 3.5.1 附带,而不是 RStudio)。使用这个install.packages(c("rlang", "devtools", "yaml"), repos = "https://cran.rstudio.com", dependencies = TRUE)
  • 仅供参考,R 3.5.1 已于昨天发布,RStudio 1.1.453 是最新的,所以在您使用它时进行更新
  • 编辑:过去我在C:\Program Files\R\R-3.5.1\bin\x64中使用Rterm.exe
  • @Tung 我已经更新了我的 R 和 RStudio 版本(不幸的是,我必须首先说服我的工作场所批准它们)并通过 R 3.5.1 安装了这些软件包,但是,我仍然得到相同的结果rlang 错误。
  • 试试这个community.rstudio.com/t/… 就 R 和 RStudio 而言,安装它们不需要管理员权限。只需安装到您具有写入权限的任何文件夹即可。 RStudio 也有可以使用 iirc 的 zip 包

标签: r


【解决方案1】:

您有 3 个不同的警告(digest、yaml 和 rlang),每个警告都表明包 DLL 文件已损坏。你在安装你的包时做错了什么。

此问题的最常见原因是在 R 中加载包时尝试更新包(可能在另一个进程中!)。它也可能是由锁定 dll 的不良防病毒程序引起的,从而阻止它被更新。请尝试以下步骤:

  1. 退出所有 R/Rstudio 会话。检查taskmgr 是否没有RtermRgui 进程正在运行。
  2. 删除Documents\R\win-library\3.5\ 内的文件夹yamlrlangdigest 以及C:\Program Files\R\R-3.5.x\library\(如果它们也存在)。
  3. 启动 R 以确认它们已消失。运行 library(yaml)library(rlang) 应该会给出错误,例如:没有名为“yaml”的包。退出 R。
  4. 启动一个新的 R 并运行:install.packages(c("yaml", "rlang", "digest"))
  5. 密切关注输出,尤其是最后几行。如果您看到如下警告,说明安装已损坏,您应该删除软件包!

【讨论】:

  • 如上所述,我的机构 IT 可以在笔记本电脑上复制此内容,并且安装了全新的 R 并且之前没有安装任何软件包(意思与安装已运行的另一个版本的软件包无关) .不返回任何错误消息。但是,我越来越多地认为这与我的 IT 设置权限的方式有关,导致事情悄然失败。
【解决方案2】:

这类问题几乎总是来自 Windows 上的 R 中的一个错误:如果您重新安装包含已编译代码的包,并且如果该包已在 R 中加载,则 DLL 将不会得到更新。

请尝试在新会话中重新安装 rlang。有时包会在启动时从 .RProfile 自动加载,您可以在启动后通过调用 sessionInfo() 来检查这一点。

【讨论】:

  • 我们已经尝试过了 - 并且可以在没有现有软件包安装的全新安装上复制此问题。
  • 抱歉 :( .libPaths() 返回可疑的库路径吗?
  • 不,我已经将这个安装到.../My Documents/R/win-library/3.5/,它按预期显示,没有什么是我不希望的。在这个阶段,我觉得这一定是我工作计算机上的特定权限,IT 刚刚进行了大规模更新以锁定事情。我们进行了一些测试,当我以管理员身份运行时,问题似乎消失了(IT 通常不会让我这样做)。不太确定从哪里开始,因为这似乎是我的工作设置特有的问题。
【解决方案3】:

回答我自己的问题,以防其他人将来遇到类似问题...

与我的工作 IT 部门合作,我们现在已将此绑定到我的工作站上的自定义权限,这意味着 R 包只能运行到预先指定的库(在我的情况下为“C:\R\R-3.4.3\图书馆”)。

将包直接安装到该位置可以解决问题,但由于人们可能希望使用自定义位置的所有原因(例如,运行同一包的多个版本,为某些项目保留单独的库),这并不理想。

因此,考虑到您自己的 IT 系统,有两种解决方案或多或少可以实现。

  1. 说服您的 IT 部门放宽对 R 包的权限 允许自定义库位置。
  2. 放弃并从“允许的”库位置(例如 C:\R\R-3.4.3\library)运行所有内容
  3. 每次您需要将软件包安装到自定义位置并希望 IT 最终让步时,请提出支持请求。

【讨论】:

    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 2021-03-23
    • 2017-07-04
    • 2021-07-09
    • 2018-12-16
    • 2023-04-03
    • 2020-10-13
    相关资源
    最近更新 更多