为什么 Rpy2 没有安装在我的 OSX Sierra 终端中?

Why is Rpy2 not installing in my OSX Sierra terminal?

我见过很多不同的人 post 这个问题(例如:Tried to guess R's HOME but no R command in the PATH. OsX 10.6 and Installing rpy2 on Mac OSX 10.8.5),但我还没有找到可行的解决方案。

我已确保在我的终端中安装了 Python-2.7,并且由于我最近通过 RStudio 进行了升级,我认为我的 R 也已更新。但每次我尝试 运行 时:

pip install rpy2

easy_install rpy2

我一直收到与 Error: Tried to guess R's HOME but no command 'R' in the PATH 相同的错误。

经过一些谷歌搜索后,我决定尝试下载最新版本的 R (v 3.4.1),尽管我非常确定它已经开始更新。但是现在我得到了以下错误的庞然大物(我应该注意我已经浓缩了它):

In file included from ./rpy/rinterface/_rinterface.c:122:
    ./rpy/rinterface/sequence.c:2173:1: warning: unused function 'ComplexVectorSexp_AsSexp' [-Wunused-function]
    ComplexVectorSexp_AsSexp(PyObject *pyfloat) {
    ^
    11 warnings generated.
    cc -bundle -undefined dynamic_lookup -arch x86_64 -arch i386 -Wl,-F. build/temp.macosx-10.12-intel-2.7/./rpy/rinterface/_rinterface.o -L/usr/local/lib -Lbuild/temp.macosx-10.12-intel-2.7 -L/usr/local/lib -lpcre -llzma -lbz2 -lz -licucore -lm -liconv -lr_utils -o build/lib.macosx-10.12-intel-2.7/rpy2/rinterface/_rinterface.so -fopenmp -F/Library/Frameworks/R.framework/.. -framework R
    clang: error: unsupported option '-fopenmp'
    clang: error: unsupported option '-fopenmp'
    error: command 'cc' failed with exit status 1

    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-zT8DaX/rpy2/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-bDnbE5-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-build-zT8DaX/rpy2/

所以现在我发生了一个完全不同的错误。我以为升级我的 R 会自动将它添加到我的环境变量 PATH,但现在我真的不知道如何处理这个问题。我已经尝试 google 这个新错误,但我似乎找不到任何适合在 Mac OSX 上使用 Python-2.7 和 R 安装 Rpy2 的解决方案-3.4。有人可以提供任何建议吗?

附录

我现在尝试了多种其他方法,包括下载 XCODE 和更新我的 GCC 编译器(http://cs.millersville.edu/~gzoppetti/InstallingGccMac.html 中描述了一种这样的方法),我还尝试重新安装GCC 使用命令 brew reinstall gcc --without-multilib。我还编辑了我的 PATH 环境变量以包括 R、CC,但仍然没有成功。

关于 "no R in the PATH" 的错误正是关于它所说的。要重现,请打开终端并输入 "R":应该找不到任何此类命令。解决方案是在 PATH.

中找到 R

现在从 R-3.4 开始,在 C 中编译 R 和 R 扩展所需的工具发生了变化,并且要求没有人们希望的那么标准。这可以被认为是 R 和 OS X 的问题,并且有一个开放的 issue in the rpy2 tracker about it.

编辑: 请注意,问题已解决,并且 pypi 上现在可以使用 rpy2-2.9.3 的预编译二进制轮。

我现在发现 rpy2 安装取决于所使用的编译器类型。苹果默认的编译器是clang,不支持rpy2的设置过程。因此,通过自制软件获取 gcc 编译器后,您可以 运行 brew ls gcc 查看计算机上存在哪些 gcc 编译器的文件路径。然后我 运行 在终端中使用以下命令将默认编译器从 clang 更改为文件路径 gcc-7,然后设置适当的标志(这是我从之前读取编译器产生的错误消息中推断出来的),以及然后安装rpy2。

export CC=/usr/local/Cellar/gcc/7.2.0/bin/x86_64-apple-darwin16.7.0-gcc-7
export CFLAGS="-W"
pip install rpy2==2.8.6

我应该注意,我安装了 rpy2 版本 2.8.6,因为我的脚本在 Python 2.7 中,而 rpy2 2.9.0 仅与 Python 3.x 兼容。此外,我知道这个答案可能无法充分描述每个人的问题,因此我鼓励其他用户扩展 and/or 更正此解决方案。

可以使用单个 env 命令进行 GCC 切换:

env CC=/usr/local/Cellar/gcc/7.2.0/bin/gcc-7 pip install rpy2

clang 不能与 RPy2 一起工作的原因是因为 clang 4.0.0 不包含 R 使用的 -fopenmp 标志。在 RPy2 Bitbucket 上有关于它的 an ongoing open problem thread .