如何使用makeLazyLoading将软件包安装到包含撇号的目录中?

问题描述

在RStudio中,我使用renv建立了一个新项目。我正在尝试安装RMarkdown软件包及其依赖项。但是,我的项目的路径名包含撇号和空格,这使我无法安装某些软件包。我无法更改此路径名(它是从OneDrive商业帐户同步的)。仍然可以安装这些软件包吗?

这是错误消息(我稍微更改了路径名,但是它遵循相同的格式,在同一位置带有撇号和空格)...

Error: unexpected symbol in "tools:::makeLazyLoading("rmarkdown","/Users/name/business account's name/team/project/renv/staging/1/00LOCK-rmarkdown/00new",keep.source = FALSE,keep.parse.data = FALSE,set.install.dir = '/"
Execution halted
ERROR: lazy loading Failed for package ‘rmarkdown’
* removing ‘/Users/name/business account's name/team/project/renv/staging/1/rmarkdown’

解决方法

很可能,您遇到的最直接的解决方法是将项目的库路径更改为指向没有任何特殊字符的位置。例如,您可以将其放置在项目的.Renviron中:

RENV_PATHS_LIBRARY = /path/to/library

其中/path/to/library是一些可写的文件路径,没有任何撇号或其他特殊字符。

您可以尝试的另一种方法是禁用R的分阶段安装-例如像这样:

Sys.setenv(R_INSTALL_STAGED = "false")
install.packages("rmarkdown",type = "source",INSTALL_opts = "--no-test-load")

或者,如果使用renv

Sys.setenv(R_INSTALL_STAGED = "false")
options(install.opts = "--no-test-load")
renv::install("rmarkdown")

可以在.Rprofile / .Renviron文件中适当地设置这些选项-有关更多详细信息,请参见?Startup