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

时间:2017-07-21 11:32:07

标签: r macos python-2.7 rpy2

我见过很多不同的人发布此问题(例如:Tried to guess R's HOME but no R command in the PATH. OsX 10.6Installing 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中,但现在我真的不知道如何处理这个问题。我试图谷歌这个新的错误,但我似乎无法找到任何适合在Mac OSX上使用Python-2.7和R-3.4安装Rpy2的解决方案。任何人都可以提供任何建议吗?

附录

我现在尝试了各种其他方法,包括下载XCODE和更新我的GCC编译器(在http://cs.millersville.edu/~gzoppetti/InstallingGccMac.html中描述了一种这样的方法),我还试图用命令{{重新安装GCC 1}}。我还编辑了我的PATH环境变量以包含R,CC,但仍然没有运气。

3 个答案:

答案 0 :(得分:2)

我现在已经发现rpy2安装取决于正在使用的正确类型的编译器。 Apple的默认编译器是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兼容。此外,我知道这个答案可能无法为每个人充分描述问题,因此我鼓励其他用户扩展和/或更正此解决方案。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

clang不能与RPy2一起使用的原因是因为clang 4.0.0不包含-fopenmp标志,这个标志由R使用。在RPy2 Bitbucket上有关于它的an ongoing open problem thread。< / p>