如何阻止包在 Rstudio 启动时加载
How can I stop a package from loading on startup in Rstudio
我有一个我一直在做的 Rstudio 项目。自从我上次将 Rstudio 更新为 1.0.143 - Mac OS X 10.6+(64 位)后,项目无法启动。
我认为它可能链接到一个在启动时自动加载的包,并且出于某种原因尚未决定停止使用 R/Rstudio。 XLConnect...
我试过从目录中删除 .RData、.Rhistory 和 .Rproj.user。只有删除 .RData 有效并且 Rstudio 启动没有问题。我的目录、我的主目录或站点范围的文件中似乎没有任何 .RProfile 文件。
现在我什至无法打开 Rstudio 会话,因为它因错误而崩溃
R encountered a fatal error.
The session was terminated.
我可以毫无问题地打开其他 Rstudio 会话。
当我打开一个单独的 R 会话(没有 R 工作室)并尝试
load('path/to/.RData')
我收到以下错误消息:
* caught segfault *
address 0x18, cause 'memory not mapped'
Traceback:
1: dyn.load(file, DLLpath = DLLpath, ...)
2: library.dynam(lib, package, package.lib)
3: loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]])
4: asNamespace(ns)
5: namespaceImportFrom(ns, loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]), i[[2L]], from = package)
6: loadNamespace(name)
7: doTryCatch(return(expr), name, parentenv, handler)
8: tryCatchOne(expr, names, parentenv, handlers[[1L]])
9: tryCatchList(expr, classes, parentenv, handlers)
10: tryCatch(loadNamespace(name), error = function(e) { warning(gettextf("namespace %s is not available and has been
replaced\nby .GlobalEnv when processing object %s", sQuote(name)[1L], sQuote(where)), domain = NA, call. = >FALSE, immediate. = TRUE) .GlobalEnv})
11: ..getNamespace(c("openxlsx", "4.0.17"), "uwc.sel.book")
12: load("./Dropbox/OxfordTT2017/DNAextraction_26052017/ColWork2017/Fielddata_04052016/.RData")
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
所以我正在寻找一种方法来阻止 Rstudio 会话在启动时加载包(我不确定为什么它首先这样做,因为我不记得设置任何类型的 RProfile。 .).
看来您在之前的RStudio seeion中创建了一些对象,它们需要特定的包。当您关闭 RStudio 时,您的工作区保存在 .RData
文件中。然后,如果您再次启动该项目,RStudio 将尝试恢复上一个工作区,但这些对象需要某些包才能工作。所以你看到 RStudio 在启动时加载了这些包。
例如新建一个RStudio项目。
install.packages('phylobase')
library(phylobase)
mytree <- phylo4(x=matrix(data=c(4,1, 4,5, 5,2, 5,3, 0,4), ncol=2, byrow=TRUE), tip.label=c("speciesA", "speciesB", "speciesC"))
关闭该项目并重新打开它(确保保存工作区)。
R version 3.4.1 (2017-06-30) -- "Single Candle"
...
Type 'q()' to quit R.
[Workspace loaded from W:/work/Git/bookdown-minimal/.RData]
Loading required package: phylobase
> search()
[1] ".GlobalEnv" "package:phylobase" "tools:rstudio" "package:stats" "package:graphics"
[6] "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads"
[11] "package:base"
mytree
是S4的class对象,可以看到自动加载了phylobase。您可以参考 S4 classes.
的文档
解决方案
- 您必须安装所需的软件包或放弃
.RData
文件。
- 您可以通过
Tools
-> Global Options...
取消选中 Resotore .RData into workspace at startup
来阻止 RStudio 在启动时加载包。您仍然不能使用 .RData
文件中的对象,除非您执行 1.
这就是我解决问题的方法:
下面的所有内容都在包含 *.RProj
文件的目录中。
首先,我在终端中通过 运行 'hid' .RData 文件。
mv .RData ./.RData_old
接下来,我 运行 在 R 会话中(不是 Rstudio):
remove.packages('XLConnect', 'XLConnectJars')
然后我关闭了 R 会话并打开了 Rstudio 项目以确保它在没有 RData 文件的情况下也能正常打开。
之后我取回了我的 RData 文件
mv .RData_old ./.RData
终于,我再次打开了项目文件,转瞬即逝!
它抱怨没有安装包,但至少我知道需要哪些包。而且,我的数据和结果都没有丢失。
分享我的解决方案:在 Rstudio 中,工具 -> 全局选项 -> 常规 -> 取消选中“在启动时恢复最近打开的项目”
之前我删除了我的 .Rprofile,默认的 .Rdata,并在全局选项中取消选中“启动时将 .RData 恢复到工作区”。 None 其中阻止了不需要的包在启动 Rstudio 时加载。
我现在正在调试可能导致问题的项目,因为我不知道正在打开一个项目。
不确定这是否能解决您的问题,但我发现此页面试图调试我的问题,但我没有在其他任何地方看到取消选中“在启动时恢复最近打开的项目”。
我有一个我一直在做的 Rstudio 项目。自从我上次将 Rstudio 更新为 1.0.143 - Mac OS X 10.6+(64 位)后,项目无法启动。 我认为它可能链接到一个在启动时自动加载的包,并且出于某种原因尚未决定停止使用 R/Rstudio。 XLConnect...
我试过从目录中删除 .RData、.Rhistory 和 .Rproj.user。只有删除 .RData 有效并且 Rstudio 启动没有问题。我的目录、我的主目录或站点范围的文件中似乎没有任何 .RProfile 文件。
现在我什至无法打开 Rstudio 会话,因为它因错误而崩溃
R encountered a fatal error. The session was terminated.
我可以毫无问题地打开其他 Rstudio 会话。
当我打开一个单独的 R 会话(没有 R 工作室)并尝试
load('path/to/.RData')
我收到以下错误消息:
* caught segfault * address 0x18, cause 'memory not mapped'
Traceback: 1: dyn.load(file, DLLpath = DLLpath, ...)
2: library.dynam(lib, package, package.lib)
3: loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]])
4: asNamespace(ns)
5: namespaceImportFrom(ns, loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]), i[[2L]], from = package)
6: loadNamespace(name)
7: doTryCatch(return(expr), name, parentenv, handler)
8: tryCatchOne(expr, names, parentenv, handlers[[1L]])
9: tryCatchList(expr, classes, parentenv, handlers)
10: tryCatch(loadNamespace(name), error = function(e) { warning(gettextf("namespace %s is not available and has been
replaced\nby .GlobalEnv when processing object %s", sQuote(name)[1L], sQuote(where)), domain = NA, call. = >FALSE, immediate. = TRUE) .GlobalEnv})
11: ..getNamespace(c("openxlsx", "4.0.17"), "uwc.sel.book")
12: load("./Dropbox/OxfordTT2017/DNAextraction_26052017/ColWork2017/Fielddata_04052016/.RData")
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
所以我正在寻找一种方法来阻止 Rstudio 会话在启动时加载包(我不确定为什么它首先这样做,因为我不记得设置任何类型的 RProfile。 .).
看来您在之前的RStudio seeion中创建了一些对象,它们需要特定的包。当您关闭 RStudio 时,您的工作区保存在 .RData
文件中。然后,如果您再次启动该项目,RStudio 将尝试恢复上一个工作区,但这些对象需要某些包才能工作。所以你看到 RStudio 在启动时加载了这些包。
例如新建一个RStudio项目。
install.packages('phylobase')
library(phylobase)
mytree <- phylo4(x=matrix(data=c(4,1, 4,5, 5,2, 5,3, 0,4), ncol=2, byrow=TRUE), tip.label=c("speciesA", "speciesB", "speciesC"))
关闭该项目并重新打开它(确保保存工作区)。
R version 3.4.1 (2017-06-30) -- "Single Candle"
...
Type 'q()' to quit R.
[Workspace loaded from W:/work/Git/bookdown-minimal/.RData]
Loading required package: phylobase
> search()
[1] ".GlobalEnv" "package:phylobase" "tools:rstudio" "package:stats" "package:graphics"
[6] "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads"
[11] "package:base"
mytree
是S4的class对象,可以看到自动加载了phylobase。您可以参考 S4 classes.
解决方案
- 您必须安装所需的软件包或放弃
.RData
文件。 - 您可以通过
Tools
->Global Options...
取消选中Resotore .RData into workspace at startup
来阻止 RStudio 在启动时加载包。您仍然不能使用.RData
文件中的对象,除非您执行 1.
这就是我解决问题的方法:
下面的所有内容都在包含 *.RProj
文件的目录中。
首先,我在终端中通过 运行 'hid' .RData 文件。
mv .RData ./.RData_old
接下来,我 运行 在 R 会话中(不是 Rstudio):
remove.packages('XLConnect', 'XLConnectJars')
然后我关闭了 R 会话并打开了 Rstudio 项目以确保它在没有 RData 文件的情况下也能正常打开。
之后我取回了我的 RData 文件
mv .RData_old ./.RData
终于,我再次打开了项目文件,转瞬即逝!
它抱怨没有安装包,但至少我知道需要哪些包。而且,我的数据和结果都没有丢失。
分享我的解决方案:在 Rstudio 中,工具 -> 全局选项 -> 常规 -> 取消选中“在启动时恢复最近打开的项目”
之前我删除了我的 .Rprofile,默认的 .Rdata,并在全局选项中取消选中“启动时将 .RData 恢复到工作区”。 None 其中阻止了不需要的包在启动 Rstudio 时加载。
我现在正在调试可能导致问题的项目,因为我不知道正在打开一个项目。
不确定这是否能解决您的问题,但我发现此页面试图调试我的问题,但我没有在其他任何地方看到取消选中“在启动时恢复最近打开的项目”。