我有一个 RStudio 项目,它使用 renv
管理包,效果很好。
但有时我想在我的主环境(正确的词?)上使用库来调试或探索一些我不想添加到项目中的东西。例如,也许我想运行一些长调试函数并在最后调用 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
的情况下运行快照,它将被添加到锁定文件中,这不是您想要的。“隐式”
:只要保存到库的 R 代码中没有引用beepr
,它就不会被添加到锁定文件中."explicit"
:仅添加DESCRIPTION
中定义的包。"custom"
:顾名思义,是自定义的,但取决于项目中保存的文件,因此仅在保存在某处时才会添加beepr
而不仅仅是通过调试以交互方式使用。
因此,总而言之,除非您使用"all"
,否则您应该可以安全地安装和使用beepr
!如果您使用的是"all"
,那么请务必在运行snapshot()
之前detach("package:beepr", unload = TRUE)
>.
关于r - `renv`有可能是 "bypassed"或者暂时关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70189319/