如何永久设置环境变量R?

26
我想设置Reticulate包使用的Python默认分发版本。我使用:
Sys.setenv(RETICULATE_PYTHON = "/usr/local/bin/python3")

然而,每次启动R时我都必须重新输入这行代码。我该如何永久设置它,以便每次都无需指定我需要哪个Python分发版本?

然而,每次启动R时我都必须重新输入这行代码。我该如何永久设置它,以便每次都无需指定我需要哪个Python分发版本?


8
请将该行代码添加到您的RProfile文件中。 - Brian Davis
我已经尝试过了,但仍然无法正常工作。 - Christopher Costello
1
你有其他的Rprofile内容吗?它在启动时是否被加载?.Rprofile应该位于这里:Sys.getenv("R_USER") - Brian Davis
1
Sys.getenv("R_USER") 返回 ""(空白) - Christopher Costello
我建议您尝试创建一个名为.Rprofile的文件并将其放在您的工作目录中。在文件中添加以下行:.First <- function() cat("\014\ntesting\ntesting")。如果您的R配置文件正在加载,它将在启动时向控制台打印“testing testing”。如果这不起作用,那么Google就是您的好朋友。 - Brian Davis
@BrianDavis:你是指 R_HOME 吗?我认为 R_USER 是针对 Windows 特定的。 - James Hirschorn
2个回答

20
在Windows上,如评论中Brian Davis所建议的,使用Sys.getenv('R_USER')来知道您的主文件夹的位置。 在Linux上,Sys.getenv('HOME')应该是您正常使用的主文件夹。 现在打开终端(如果您使用的是最近版本的Rstudio,则在控制台旁边有一个终端),进入您的主文件夹并添加.Renviron文件。 您也可以不使用终端来完成此操作,但是您可能需要确认以点开头的文件的创建。
cd path_to_my_home_Folder
touch .Renviron

RETICULATE_PYTHON = /usr/local/bin/python3添加到其中,并在末尾添加一行。如果文件是新的,则应该如下所示:

> RETICULATE_PYTHON = /usr/local/bin/python3

现在,你应该能够在每个R会话中使用 Sys.getenv('RETICULATE_PYTHON') 来访问你的环境变量,因为R在启动时会查找定义环境变量的任何.Renviron文件位于R主目录下(请参见文档startup?Startup)。

更新 29/10/2018

事实证明,使用.Renviron定义的变量仅在Rstudio内可用,这并不奇怪,因为.Renviron文件在Rstudio启动时被读取。如果您希望环境变量对于Rscript(例如)可用,则可以:

Windows: 将其添加到用户环境变量中,使用“修改环境变量”实用程序(可在开始菜单搜索栏中找到)

Mac: 您可以使用与上述完全相同的过程,但将其应用于您的.bash_profile而不是.Rstudio。打开终端并将自己放置在用户根文件夹(通常是终端的默认位置)。添加以下行(等号周围不要有空格):

export RETICULATE_PYTHON=/usr/local/bin/python3

保存并关闭,重新启动终端。终端在启动时会读取您的.bash_profile文件,从而定义环境变量。现在您的RETICULATE_PYTHON应该即使在非交互式R会话中也可用。


1
我认为2018年的更新部分不再是真实的。此外,普通的R或Rscript会读取.Renviron文件,除非您使用--no-environ参数手动禁止它。 - Jaleks

11

usethis包有一个函数,可以打开你家目录下的.Renviron文件。

usethis::edit_r_environ()

打开文件后,只需添加您的键值对 key=value,保存并关闭即可。

RETICULATE_PYTHON=/usr/local/bin/python3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接