`renv` 是否可以 "bypassed" 或暂时关闭?

Is it possible for `renv` to be "bypassed" or temporarily turned off?

我有一个使用 renv 管理包的 RStudio 项目,效果很好。

但有时我想在我的主要环境(正确的词?)上使用库来调试或探索一些我不想添加到项目中的东西。例如,也许我想 运行 一些长调试函数并在最后调用 beepr::beep()。如果不将 beepr 包安装到项目中是否可行?

long_process()
beepr::beep() # How do I make this call?

您可以在技术上禁用沙盒,这就是 renv 阻止安装在系统库中的包在项目中可用的地方(这就是为什么您无法使用 beepr::beep()在您的示例中。您可以轻松更改用户配置,只需查看 documentation from env。此处的设置为 renv.config.sandbox.enabled

但是,我认为这不是最佳选择。根据 ?renv::snapshot 中描述的快照类型设置,您不必担心安装 beepr 但它会被添加到锁定文件中。

您可以使用以下方式检查或设置快照类型:

renv::settings$snapshot.type()

如果你在环境中安装beepr包,那么根据类型你会得到:

  • "all":唯一有问题的设置。如果您 运行 快照 beepr 主动加载,它将被添加到锁定文件,这不是您想要的。

  • "implicit":只要beepr在保存到库的R代码中没有被引用,它就不会被添加到锁文件中。

  • "explicit": 只添加在DESCRIPTION.

    中定义的包
  • "custom":正如所暗示的那样,是自定义的,但取决于项目中保存的文件,因此仅在保存在某处而不是仅使用调试交互使用时才添加 beepr .

所以,总而言之,除非您正在使用 "all",否则您应该可以安全地安装和使用 beepr!如果您正在使用 "all",那么请确保在 运行 之前 detach("package:beepr", unload = TRUE) snapshot()