我正在使用最新的R,RStudio和Rtools。
- 我更新了环境变量。现在我可以从命令行调用gcc或R.
当我尝试从RStudio发布应用时,我收到以下错误,
准备部署应用程序... DONE上传包 应用:64015 ...错误: *应用程序取决于包“Rtools”,但它没有安装。请在继续之前解决。执行暂停
- 我试过这个,在控制台上,
> find_rtools(T)
Scanning path...
ls : D:\Rtools\bin\ls.exe
gcc: D:\Rtools\GCC-46~1.3\bin\gcc.exe
VERSION.txt
Rtools version 3.3.0.1959
Version: 3.3
[1] TRUE
所以,Rtools似乎基本上就在那里!
- 我已经检查了环境变量,那些都没问题,因为我也提到R和gcc可以从命令行启动
然而,我尝试使用installr软件包在RStudio内安装和检查,它说,
> install.Rtools()
No need to install Rtools - You've got the relevant version of Rtools installed
>
- 这不是可能的重复,Rtools not being detected by R 我尝试了所有这些。没用。
请提出解决方案。非常感谢你的时间。
答案 0 :(得分:21)
我不知道为什么RStudio会不时出现这样的问题,但这里有一个手动解决方法:
https://github.com/rwinlib/r-base/wiki/Testing-Packages-with-Experimental-R-Devel-Build-for-Windows
基本上,您必须将两个环境变量设置为Rtools的正确安装路径:
Sys.setenv(PATH = paste("C:/Rtools/bin", Sys.getenv("PATH"), sep=";"))
Sys.setenv(BINPREF = "C:/Rtools/mingw_$(WIN)/bin/")
为了避免在重新启动RStudio后丢失此更改,您可以修改Windows环境变量,或者将以下行添加到每次启动R时执行的.Renviron
文件中。
顺便说一句:$(WIN)
部分是否错字,但需要这样R才能注入“32”或“64”,具体取决于您使用的R版本(32位或64位)
修改1::另请参阅最近发布的这篇r-bloggers文章:https://www.r-bloggers.com/quirks-about-running-rcpp-on-windows-through-rstudio/
答案 1 :(得分:1)
请注意,存在新的潜在问题(从R 3.3开始),因为R(不是RStudio,但R )添加BINPREF
变量并修改{默认情况下为{1}}变量,请参阅后者的Path
文件,例如在Windows上在Renviron.site
下:
C:\Program Files\R\R-3.4.3\etc
对于安装了自定义路径和/或多个版本的Rtool的人来说,这可能很容易发生冲突,所以我用PATH="C:\Rtools\bin;${PATH}"
对此进行了评论。
对于#
问题,请参阅BINPREF
文件,例如在Makeconf
下:
C:\Program Files\R\R-3.4.3\etc\x64
然后我将其修改为BINPREF ?= c:/Rtools/mingw_64/bin/
,这是我安装c:/Rtools34/mingw_64/bin/
的地方
您可以对32位arch下的Rtools34
文件执行相同的操作。子目录。
答案 2 :(得分:1)
在搜索了很多解决方案之后,最后我删除了 C:\Users\My name\Documents 中的 .Renviron 文件。然后 rtools40 工作。
答案 3 :(得分:0)
通过R CMD check not looking for gcc in Rtools directory:
R使用BINPREF
变量来定位某些可执行文件,包括RTools的组件。
BINPREF
可以在许多地方设置。就我而言,它是在C:/Users/MYUSERNAME/Documents/.R/Makevars
中设置的。删除此文件的内容将删除指向以前的RTools安装的链接,并且由于删除该链接,因此已删除。
也值得检查文件$RPATH/etc/i386/Makeconf
(如果您使用64位安装,则将其交换用于x64的i386),将在每次R的每次新安装时重新创建。
BINPREF ?= c:/Rtools/mingw_32/bin/
,它(通过?=
运算符)将设置BINPREF
的值(如果尚未设置),如上面提到的Makevars文件中那样。
一个临时解决方法是将BINPREF ?=
替换为BINPREF =
,
但是由于更新R时Make conf 文件会被覆盖,因此您每次都必须记住要这样做。最好编辑或删除Make vars 文件,以进行永久更改。