R 包检查中的循环依赖错误,但 Depends 中没有循环引用

circular dependency error in R package check, yet no circular refs in Depends

当 运行 CHECK:

时,我的 R 包出现循环依赖错误
checking package dependencies ... ERROR
  There is circular dependency in the installation order:
    One or more packages in

然后是一长串软件包。

但是,我在 DESCRIPTION 中的 Depends 类别非常少:

Depends: methods, R (>= 3.5.0), magrittr

所有其他引用的包都在导入或建议中。我在 Imports 中的一个包也在他们的 Imports 中列出了我的包,但我认为这不会导致依赖性问题。我认为我在 DESCRIPTION 中的任何其他软件包都没有在他们的列表中列出我的。

我在网上搜索了很多,但没有找到相关的解决方案。有任何想法吗?预先感谢您的建议。

Session 信息:

R version 4.0.5 (2021-03-31)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_4.0.5 tools_4.0.5    tinytex_0.31   xfun_0.28     

Depends 和 imports 都需要一个依赖项。主要区别在于导入不会将项目添加到用户的搜索路径。参见 here or here。你不能在你的“导入”下列出一个包,而在他们的“导入”下列出你——那部分与“依赖”相同。包一直使用包中的函数,但共享只是一种方式。

一种可能的解决方法是将该函数(在其他包作者的许可下)复制到您自己的包中。

我看到其他包使用的另一个选项是将共享逻辑移动到单独的帮助程序包,然后两个包都可以导入该帮助程序包。

最后,如果它是一个您并不真正需要的功能,您可以将其移动到建议中,然后检查是否仅在您需要该功能时安装了该软件包,如果没有则可以抛出错误。