r - renv 真的安装了与 r 基础环境隔离的软件包吗?
问题描述
我有一个通过rstudio
使用 GUI 创建的项目并点击(新建项目)按钮。以下是我如何使用renv
. 我的操作系统是 Ubuntu 20.04 LTS。
到目前为止一切顺利,renv
已经创建了通常的可疑文件和文件夹:
.Rprofile
renv/activate.R
renv/library
它还没有创建renv.lock
。我相信这是因为我从未要求renv::snapshot()
创建文件夹。
然后我开始在我的项目上正常工作,并通过调用安装了几个包install.packages()
。例如dplyr
是其中一个包。但是我注意到,当我关闭项目并调用installed.packages()
我项目中安装的相同包时,也会安装在外部。我认为renv
像conda
python 中的环境一样工作,packages
与其他环境隔离。我在这里想念什么?我的直觉是,这并不是像pythonrenv
那样真正的虚拟环境。conda
当我libPaths()
在我的项目中运行时,我得到了路径renv/library
和/tmp/...
路径:
[1] "/home/alex/Documents/GitHub/CIMMYT/renv/library/R-4.0/x86_64-pc-linux-gnu"
[2] "/tmp/RtmpdfQT46/renv-system-library"
当我libPaths()
在项目之外运行时,我得到:
[1] "/home/alex/R/x86_64-pc-linux-gnu-library/4.0"
[2] "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
解决方案
然后我开始在我的项目上正常工作,并通过调用 install.packages() 安装了几个包。例如 dplyr 就是其中之一。但是我注意到,当我关闭项目并调用 installed.packages() 时,我的项目中安装的相同包也安装在外部。我认为 renv 就像 python 中的 conda 环境一样工作,其中包与其他环境隔离。我在这里想念什么?我的直觉是 renv 并不是像 conda for python 这样的虚拟环境。
这里最可能的答案是这些包也安装到您的用户库中,在一个单独的时间点。
如果您可以将其提炼成可重现的示例,您可以在https://github.com/rstudio/renv/issues提出问题。但是,据我所知,一切都按预期工作,并且安装到您的用户库中的软件包可能通过其他机制到达那里。
推荐阅读
- c++ - 用 cython 包装的 C++ 函数的时序
- java - 在 Android Studio 中查找准确的日期时间
- python - 如何使用诱变剂打印 ID3 标签
- go - path.Join 的可移植性用于 URL 路径
- android - AccountsManager.get(this).getAccounts 始终为 0
- android - 如何使用 RestTemplate 在响应正文(身份验证 Web 服务)中返回令牌?
- c# - 将 byte[] 转换为显式结构的最简单方法
- mysql - MySQL 到 H2 DDL 的问题
- .net - 无法解析 ASP.NET Core DI 类型的服务
- javascript - 有时数据不会从数据库中填充