代码之家  ›  专栏  ›  技术社区  ›  Emily Kothe

错误:包或命名空间加载失败,对象…未找到

r
  •  2
  • Emily Kothe  · 技术社区  · 6 年前

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

    我已经用 install.packages("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. 库(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 
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   Jeroen Ooms    6 年前

    有3个不同的警告(摘要、yaml和rlang)分别表示包dll文件已损坏。你在安装软件包时做错了什么。

    此问题最常见的原因是试图在将包加载到r中时更新包(可能在另一个进程中!)。也可能是由于错误的防病毒程序锁定了阻止其更新的dll。请尝试以下步骤:

    1. 退出所有r/rstudio会话。登记入住 taskmgr 那不是 Rterm Rgui 进程正在运行。
    2. 删除文件夹 yaml , rlang digest 里面 Documents\R\win-library\3.5\ 也在里面 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. 注意输出,特别是最后一行。如果您看到下面这样的警告,安装程序已损坏,您应该删除包!

    enter image description here

        2
  •  0
  •   Lionel Henry    6 年前

    这类问题几乎总是来自windows上r中的一个bug:如果重新安装包含编译代码的包,并且该包已经加载到r中,则dll将不会得到更新。

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

        3
  •  0
  •   Emily Kothe    6 年前

    回答我自己的问题,以防将来有人遇到类似的问题…

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

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

    因此,根据您自己的IT系统,有两种解决方案可能或多或少是可以实现的。

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