我有一个 RStudio 项目,它使用 来管理包renv
,效果很好。
但有时我想在我不想添加到项目中的主要环境(正确的词?)上使用库来调试或探索某些东西。例如,也许我想运行一些长时间的调试功能并beepr::beep()
在最后调用。如果不将beepr
软件包安装到项目中,这可能吗?
long_process()
beepr::beep() # How do I make this call?
您可以从技术上禁用沙盒,这是renv
防止安装在系统库中的软件包在项目中可用的地方(这就是您无法beepr::beep()
在示例中使用的原因。您可以轻松更改用户配置,只需查看来自 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()
。