使system2使用特定版本的python

时间:2018-11-18 21:52:38

标签: r

我在桌面上同时安装了python2和python3。如果我做 python -V在终端中,我得到Python 3.6.0 :: Anaconda 4.3.0 (x86_64)

但是,如果我使用R中的system2命令

system2("python", args = "-V")

然后它报告Python 2.7.10

如果指定完整路径,我将获得正确的版本

system2("//anaconda/bin/python", args = "-V")

Python 3.6.0 :: Anaconda 4.3.0 (x86_64)

但是我希望system2默认只使用python3。是否可以更改使用的版本?这是用于Mac OSX

1 个答案:

答案 0 :(得分:1)

从R应用程序或RStudio运行R时,系统调用访问的环境与从终端运行R时所访问的环境不同。因此,您配置为在Shell程序中运行Unix可执行文件的正确版本的PATH环境变量与在环境变量中的system2()system()调用中使用的环境变量不同。这两个应用程序中的R会话。为了解决这个问题,您需要在R环境中设置路径。

在交互式会话中,您可以执行以下操作:

# Reproducing your problem (in the R application or RStudio)
system2("python", args="-V")
# Python 2.7.10

# set a new PATH in the environment accessed by R
# This is the line you can also add to your .Rprofile
Sys.setenv(PATH = paste(c("//anaconda/bin", Sys.getenv("PATH"), 
                        collapse = .Platform$path.sep))
# For users other than the OP, you'll want to use the directory
# where your preferred installation of python is. For the OP that's
# //anaconda/bin

# Confirm
system2("python", args="-V")
# Python 3.6.0 :: Anaconda 4.3.0 (x86_64)

现在应该在目录python中找到系统命令//anaconda/bin,而不是/usr/bin。当然,这取决于在系统中找到这些Unix可执行文件的位置,因此对于OP以外的读者,您将需要使用保存所需版本python的目录。

PATH将在整个R会话的其余部分保持有效。要在所有R个会话中更改路径,请更新(或创建,如果尚未创建).Rprofile文件。 .Rprofile文件可以位于(或转到)您的HOME目录或R_HOME中。如果将以上行添加到.Rprofile,则每次R初始化时,它们都会在每个R会话的开始执行。