【问题标题】:Issue with R package check on Windows: package suggested but not available: 'stringi'Windows 上的 R 包检查问题:建议的包但不可用:'stringi'
【发布时间】:2018-12-29 10:12:45
【问题描述】:

我在 MAC OS 下的 RStuio 中构建了一个 R 包,通过 devtools::check() 检查它后,我没有遇到任何问题(0 个错误,0 个警告,0 个注释)。

我在 Windows 下测试时遇到了问题。我的包中没有任何函数使用“stringi”包,但我收到了这个错误:

> E  checking package dependencies    Package suggested but not
> available: 'stringi'
>        The suggested packages are required for a complete check.    Checking can be attempted without them by setting the environment   
> variable _R_CHECK_FORCE_SUGGESTS_ to a false value.

只有在 Windows 下测试我的包时才会出现此错误。我进行了一些网络搜索,但找不到合适的解决方案。我发现的唯一类似的事情是同一个论坛的早期帖子( Package dependency error "there is no package called ‘stringi’") 但没有提出适合我情况的解决方案。

我尝试在我的包的 Depends、Imports 或 Suggests 中包含“stringi”,但这无法解决问题。在第二种情况下(导入),在检查包时,我收到一条错误消息,指出我实现的任何函数都不需要“stringi”包。

是否有任何可行的实际解决方案?

如果可能有帮助,这些是我的包描述中列为导入的包:

Imports:
    ca (>= 0.70),
    classInt (>= 0.2-3),
    cluster (>= 2.0.7),
    FactoMineR (>= 1.40),
    ggplot2 (>= 3.0.0),
    ggrepel (>= 0.8.0),
    graphics (>= 3.4.3),
    Hmisc (>= 4.1-1),
    RcmdrMisc (>= 1.0),
    reshape2 (>= 1.4.3),
    stats (>= 3.4.3),
    utils (>= 3.4.3)

【问题讨论】:

    标签: r dependencies package


    【解决方案1】:

    包本身也可以有依赖, 这成为你的包的传递依赖。 您可以使用remotes 包来找到它们:

    library(remotes)
    deps <- package_deps("ggplot2")
    deps$package
     [1] "assertthat"   "cli"          "colorspace"   "crayon"       "dichromat"    "digest"       "fansi"        "ggplot2"     
     [9] "glue"         "gtable"       "labeling"     "lazyeval"     "magrittr"     "munsell"      "pillar"       "plyr"        
    [17] "R6"           "RColorBrewer" "Rcpp"         "reshape2"     "rlang"        "scales"       "stringi"      "stringr"     
    [25] "tibble"       "utf8"         "viridisLite"  "withr" 
    

    您可以看到ggplot2 (传递地)依赖于stringi

    你必须安装所有的传递依赖来检查你的包, 在您要检查的每台机器上。 在 RStudio 中打开你的包项目后,你应该可以通过运行 update(dev_package_deps(dependencies=TRUE)) 来做到这一点。

    编辑:不过,当在 CRAN 上更新包时,我遇到了同样的问题, 一切恢复正常需要几天时间。 stringi 于昨天(2018-07-20)更新。

    【讨论】:

    • 你好。您的建议解决了在我的 MAC(R CMD 检查结果 0 个错误 | 0 个警告 | 0 个注释)和基于 Windows 的 PC 上(R CMD 检查结果 0 个错误 | 0 个警告 | 0 个注释)上测试我的包时的问题。不过,我想知道我的包裹应该如何通过 CRAN 测试。事实上,我已经使用 'rhub' 包来运行该包如果提交给 CRAN 将进行的一项测试,我收到了一个危险信号: loadNamespace(i, c(lib.loc, .libPaths( )), versionCheck = vI[[i]]) :没有名为“stringi”的包。所以,我回到第一方。
    • 这在 CRAN 上应该不是问题。 rhub 可能会被击中或错过,请尝试使用devtools::build_win(version = c("R-release", "R-devel"))。还要检查this reference
    • 详细说明:如果所有传递依赖项都在那里可用,这在 CRAN 上应该不是问题,但有时包在更新后会“暂时丢失”,并且您会收到有关丢失包的错误。给它一两天恢复正常。
    • 谢谢。我听从了您的建议,在基于 Windows 的 PC 上测试该软件包时没有遇到任何问题。另外,我已经运行了 devtools::build_win(version = c("R-release", "R-devel")),30 分钟后,我收到了两个报告,其中没有“stringi”依赖问题的痕迹。谢谢你。我今天学到了很多。
    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多