【问题标题】:RStudio keeps adding `/usr/local/bin` to the front of the PATH variableRStudio 不断将 `/usr/local/bin` 添加到 PATH 变量的前面
【发布时间】:2021-02-10 09:30:00
【问题描述】:

当我使用 system("...") 从 RStudio 运行系统命令时,我希望 RStudio 使用特定版本的 Python。

当我打开 RStudio(只需单击 Mac 上的图标)并使用 Sys.setenv(PATH="my_python_path") 设置 PATH 变量时,这会成功。为了使它成为默认变量,我尝试更新我的 ~/.Renviron (使用 PATH=...) 和 ~/.Rprofile (使用 Sys.setenv("...")) 预先挂起 Python 的路径我想用。

更新 .Renviron 和 .Rprofile 中的 PATH 变量会生效,但 RStudio 仍然会在 PATH 变量的前面添加 /usr/local/bin,这会将 R 定向到该目录中的默认系统 Python。我指定的 Python 路径紧随其后,并没有被使用。

有没有办法让 RStudio 遵守我在 .Renviron 或 .Rprofile 中指定的 PATH 顺序?

【问题讨论】:

  • 您正在使用的路径非常短。将my_python_path 添加到现有的前面不是更安全,而不是完全清除它吗?
  • 是的,这就是我在实践中实际所做的。只是没有将其包含在问题中
  • 我没有看到您描述的行为。如果我运行system("printenv PATH"),我会看到与Sys.getenv("PATH") 相同的路径。也许您需要升级 RStudio(我使用的是 1.4.1103),或者可能发生了其他事情。
  • 是的,这也是我的行为。我的问题源于这样一个事实,即如果我在 ~/.Rprofile 或 ~/.Renviron 文件中指定 PATH,RStudio 会将 /usr/local/bin 预置到我的 PATH 中,这使得 RStudio 使用不同的 Python(/usr/local/bin 中的那个) ) 从我指定的
  • 它似乎与 Mac OS GUI 应用程序有关,默认继承系统默认路径,如这里 apple.stackexchange.com/questions/51677/…

标签: r path rstudio


【解决方案1】:

从 cmets 来看,很明显不是 RStudio 弄乱了路径,而是 Finder。 RStudio 确实会修改路径,但会将其条目放在现有条目之后。当我将此代码放入我的~/.Rprofile 文件时:

print(Sys.getenv("PATH"))
Sys.setenv(PATH=paste("foobar", Sys.getenv("PATH"), sep=":"))

我看到这个打印出来了:

[1] "/usr/bin:/bin:/usr/sbin:/sbin" 

这就是 PATH Finder 的设置。然后在 R 会话中,当我运行 Sys.getenv("PATH") 时,我看到了

[1] "foobar:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:
/usr/local/MacGPG2/bin:/opt/X11/bin:/Library/Apple/usr/bin:/usr/local
/git/bin:/Applications/RStudio.app/Contents/MacOS/postback"

显示添加到路径末尾的 RStudio(或 R 中的某些代码在 .Rprofile 之后运行)。

【讨论】:

  • 是的,这正是我所看到的。所以我想知道,有没有办法为 RStudio 预先添加到 PATH 中,这样我对 PATH 的指定添加是 PATH 中的第一个?
  • 或者是为所有 Mac OS GUI Finder 启动的应用程序更新 PATH 的唯一解决方案(在我的用例中并不理想)?
  • 我的示例在路径前添加了“foobar”。它在最后的路径中是第一个。你还想要什么?
  • 我希望每次运行 RStudio 时自动将 foobar 添加到路径前面。我认为将 foobar 添加到 ~/.Renviron 或 ~/.Rprofile 文件会这样做,但 usr/bin/local 仍然是第一个。
  • 我不想每次启动 RStudio 时都手动输入Sys.setenv(PATH=paste("foobar", Sys.getenv("PATH"), sep=":"))
猜你喜欢
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2014-08-05
  • 2023-03-05
  • 2014-12-17
相关资源
最近更新 更多