【问题标题】:Loading dependencies from package-internal packrat library从包内部的 packrat 库加载依赖项
【发布时间】:2016-04-05 16:12:35
【问题描述】:

我正在用 packrat 构建一个 R 包。该软件包已通过

从本地保存的源文件进行全面测试和安装
install.packages("myPackage.tar.gz", repos = NULL, type = "source")

如果所有依赖项(在 Imports: 字段中指定)都安装在本地计算机上,则可以工作。 但是,我想将该软件包安装在未安装依赖项的另一台服务器上。当我尝试这样做时,我得到了错误

"ERROR: dependencies ‘survey’, ‘dplyr’ are not available for package 'myPackage'"

我还尝试安装我通过调用创建的 packrat 包

packrat::bundle(project = 'pathtomypackageproject', file = 'myPackage.tar.gz',
                include.lib = TRUE)

但我得到了同样的错误。

我认为问题在于,在安装“myPackage”时,R 搜索 .libPaths() 的第一个元素,没有找到任何内容,并且由于指定了“repos = NULL”,因此无处安装包错误被抛出。

我仍然试图避免的解决方案是将包含所有依赖项的存储库传输到服务器并在安装软件包时指向存储库。理想情况下,我只需要传输 myPackage.tar.gz。

我的问题是,是否有某种方法可以指向内部的 packrat 库,在那里可以找到所有依赖项,并从那里导入命名空间。

【问题讨论】:

  • 我们能在某处找到包裹吗?例如在 GitHub 或其他?
  • 我对 Packrat 不熟悉,但你能不能把 dplyrsurvey 添加到你的 Imports: 到你的 DESCRIPTION 文件中?
  • 我确实添加了它,但是导入需要事先安装相应的包..
  • 您能否展示一些您用来让我们了解您的工作流程的代码?
  • 我添加了更多解释和几行代码,希望这有助于理解我的问题..

标签: r devtools r-package packrat


【解决方案1】:

如果您已在说明文件中包含要导入的包列表,那么您只需在安装包时执行此操作:

  install.packages("myPackage",dependencies=TRUE)

【讨论】:

  • 这仅在我从 CRAN 安装我的包或我将所有依赖项的源文件保存在本地时才有效。我想要实现的是只需要安装一个包。如果这个包有一个包含所有依赖项的内部库,我认为可能有一种方法可以将命名空间导入指向该内部库。因为从技术上讲,可以找到所有依赖项,R 只是没有搜索正确的位置!
  • 我想要的几乎就是 Hadley 在这里提到的:github.com/rstudio/packrat/issues/31#issuecomment-208313921,但这个问题似乎还没有解决。如果有人知道如何手动解决这个问题,我将非常感激!
猜你喜欢
  • 1970-01-01
  • 2020-02-15
  • 2020-10-30
  • 2020-07-05
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2019-09-06
相关资源
最近更新 更多