【问题标题】:rPython using wrong python installation on Mac OSXrPython 在 Mac OSX 上使用错误的 python 安装
【发布时间】:2014-08-19 12:07:41
【问题描述】:

我在 OSX 10.9.4 附带的 2.7.5 旁边安装了 python 2.7.8。

现在我如何将rPython 指向 python 2.7.8?

尝试 #1

我已将 OSX .bash_profile 修改如下,以将所有内容指向较新的 python 安装。

export PATH=/usr/local/Cellar/python/2.7.8/bin/:$PATH:usr/local/bin:

现在当我从终端运行 python 时,它可以正确运行新版本

mba:~ tommy$ which python
/usr/local/Cellar/python/2.7.8/bin//python

但是,rPython 仍然看到 2.7.5。

> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]

尝试 #2

看起来.bash_profile 根本没有被 R 使用...所以我尝试在 R 中修改 PATH。但仍然没有运气。

> Sys.getenv("PATH")
[1] "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
> Sys.setenv(PATH = "usr/local/Cellar/python/2.7.8/bin")
> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]

尝试 #3

我尝试删除并重新安装 rPython 包,认为它可能使用的是安装时找到的 Python 版本。也没有运气。

尝试 #4

我已经尝试从源代码安装,看看是否有任何作用...没有运气。

更新

好吧,看来问题与 rPython 本身无关。

http://cran.r-project.org/web/packages/rPython/INSTALL

包 rPython 依赖于 Python (>= 2.7)。

它需要 Python 及其头文件和库。这些可以 在类 Debian 的 Linux 中的 python 和 python-dev 包中找到 分布。

在多个 Python 版本并存的系统中,用户可以选择 安装时使用的 Python 版本。默认情况下, 包将使用提供的 Python 版本安装

$ python --version

当我在终端中运行它时..

mba:src tommy$ python --version
Python 2.7.8

但是当我在 R 中运行它时...

> system("python --version")
Python 2.7.5

所以问题只是 R 不使用 OSX 的.bash_profile。我需要弄清楚如何在.bash_profile 之外更改PATH,或者让R 使用.bash_profile

我还能尝试什么让rPython2.7.8 一起工作?

【问题讨论】:

  • 替换整个 PATH 真是个坏主意。通常扩展现有的 PATH。 (众所周知,bash-PATH 变量与 R 看到的不同。

标签: r rpython


【解决方案1】:

我在 RStudio 中设置了以下命令,希望对您有所帮助。

> system("python --version")
Python 2.7.10

> Sys.setenv(PATH = paste("/usr/local/bin", Sys.getenv("PATH"),sep=":"))

> system("python --version")
Python 2.7.11

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我遇到了与 OP 相同的问题,这是我发现有效的解决方案。

    首先,我将RPYTHON_PYTHON_VERSION=3 添加到我的~/.bash_profile。我没有使用install.packages 安装rPython,而是从CRAN 下载源代码并使用R CMD INSTALL 从命令行安装。这工作正常并检测到我在系统上安装的python3 版本。

    【讨论】:

    • 恐怕这在按照您的说明安装后没有帮助,我这样做library(rPython) python.exec("import sys; print(sys.path)") 当我指定版本 3 时,它仍然显示 python 2.7 版本,如上所示。跨度>
    【解决方案3】:

    您可以查看 rPython INSTALL 文件(对不起,也许我应该更明确地说明)。它有一节介绍如何在多个共存时使用所​​需的 Python 版本安装 rPython。它说:

    在多个 Python 版本并存的系统中,用户可以选择 安装时使用的 Python 版本。默认情况下, 包将使用提供的 Python 版本安装

    $ python --version
    

    但如果 RPYTHON_PYTHON_VERSION 环境变量已适当设置。

    例如,如果它被定义为

     RPYTHON_PYTHON_VERSION=3.2
    

    它将尝试使用 Python 3.2(寻找 python3.2 和 python3.2-config 路径)。如果设置为

     RPYTHON_PYTHON_VERSION=3
    

    它将在 3.x 分支内针对系统中的“规范”Python 版本进行安装。

    【讨论】:

      【解决方案4】:

      我看到这篇文章试图让 R 使用所需的 Python 版本,并找到了一个对我有用的解决方案(在 OSX Yosemeti 上使用 Rstudio)。

      这是我的终端使用的 Python,这是我希望 R 找到的那个:

      $ which python
      /usr/local/bin/python
      

      在 R 中,system('which python') 产生 /usr/bin/python。我可以看到这是因为/usr/binSys.getenv('PATH') 中位于/usr/local/bin 的右侧。

      我尝试在~/.Renviron~/.Rprofile 中更改我的PATH,但它并没有解决问题。这是因为在内核启动完成之前还有另一个 Rprofile 文件正在运行。

      为了在我的系统上查找所有 Rprofile 文件,我运行了以下命令:

      cd /usr
      sudo find . -name "*Rprofile*" -print
      

      其中一个文件 -- R_HOME/library/base/R/Rprofile -- 包含一些代码,表示它处理了我的操作系统上的 PATH 冲突。我猜它选择了可能选择的错误路径。将以下行添加到该文件的 end 中,在重新启动我的 R 内核后向我显示了 Rstudio 中的正确路径:

      .Internal(Sys.setenv("PATH", paste("/usr/local/bin", Sys.getenv("PATH"), sep=":")))
      

      【讨论】:

        【解决方案5】:

        对我有用的是我在 install.packages 中指定了 lib 和版本,就像这样

        install.packages("rPython",lib= "path_to_your_R/R/library/3.1", configure.vars= "RPYTHON_PYTHON_VERSION=3")
        

        它确实安装了3.x以下的python版本

        【讨论】:

          猜你喜欢
          • 2015-06-15
          • 1970-01-01
          • 1970-01-01
          • 2012-08-07
          • 1970-01-01
          • 2012-03-26
          • 2016-08-08
          • 2018-07-26
          • 1970-01-01
          相关资源
          最近更新 更多