我在桌面上同时安装了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
答案 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会话的开始执行。