在Windows上使用Rpy2

3

我想在我的Windows机器上安装rpy2,但它给了我以下著名的错误:

      self.convert_pycparser_error(e, csource)
      File "c:\users\96171\appdata\local\temp\pip-install-lxsxk7q4\rpy2\.eggs\cffi-1.14.0-py3.6-win-amd64.egg\cffi\cparser.py", line 336, in convert_pycparser_error
        raise CDefError(msg)
    cffi.CDefError: cannot parse "void __cffi_extern_python_start; void _capsule_finalizer(SEXP); void __cffi_extern_python_stop;"
    <cdef source string>:495:96: Illegal character '\r'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\96171\AppData\Local\Temp\pip-install-lxsxk7q4\rpy2\


我已经完成了以下工作:
  • 升级设置工具
  • 将pip升级到最新版本
我遵循了此链接中有关在Windows上安装rpy2的说明,并且他们说我们必须下载预编译二进制文件才能使其正常工作。
我从此链接下载了如下wheel: rpy2‑2.9.5‑cp37‑cp37m‑win_amd64.whl,但我仍然遇到麻烦;我按照以下步骤进行操作:
  • 在下载wheel的目录中以管理员身份打开cmd
  • 设置%R_USER%为我的用户名,如下所示: R_USER C:\Users\my_username 但是我收到以下错误信息:

ERROR: rpy2-2.9.5-cp37-cp37m-win_amd64.whl is not a supported wheel on this platform.

二进制文件的网站上,他们说:

Rpy2(已停止使用,不稳定):提供访问用于统计计算和图形的R软件环境。需要R 3.3,而我在我的系统上使用的是R 3.6.2。这导致错误吗?


所有从二进制网站下载的wheel文件必须符合您的机器(操作系统、32/64位架构、Python版本)。 - Parfait
1个回答

2

新答案
问题在于我下载了错误的wheel文件。cp37表示CPython 3.7,而我系统上安装的是python 3.6。我下载了rpy2-2.9.5-cp36-cp36m-win_amd64.whl而不是rpy2-2.9.5-cp37-cp37m-win_amd64.whl,这样就可以运行了。

此外,我在 Python 脚本中遇到了 R_USERR_HOME 的问题,因此我进行了以下操作:

import os
# see the following 2 lines
os.environ['R_HOME'] = 'C:/Program Files/R/R-3.6.2'
os.environ['R_USER'] = 'C:/Users/96171/AppData/Local/Programs/Python/Python36/Lib/site-packages/rpy2' #path depends on where you installed Python. Mine is the site packages of the regular python installation, it could have been Anaconda

# importing rpy2
import rpy2.robjects as robjects
r = robjects.r
r['source']('sample_r.r')

参考资料:这里 更新:
为了避免使用os calls,我将R_USERR_HOME添加到系统变量环境变量中,以达到所需的行为。
  • R_USER:C:\Users\96171\AppData\Local\Programs\Python\Python36\Lib\site-packages\rpy2
  • R_HOME:C:\Program Files\R\R-3.6.2

1
如果您拥有管理员权限,可以永久设置这些环境变量并避免使用“os”调用。 - Parfait

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接