Rpy2 на windows - PullRequest
       6

Rpy2 на windows

0 голосов
/ 14 февраля 2020

Я хочу установить rpy2 на мою windows машину, и это дает мне следующую известную ошибку

      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 до последней версии

Я перешел по ссылке здесь для установки rpy2 на windows, и они говорят, что нам нужно скачать предварительно скомпилированный двоичный файл для того, чтобы это работало.

Я скачал по следующей ссылке ссылка это колесо: rpy2‑2.9.5‑cp37‑cp37m‑win_amd64.whl однако я все еще сталкиваюсь с проблемой; Я сделал следующее:

  • После того, как я скачал rpy2‑2.9.5‑cp37‑cp37m‑win_amd64.whl
  • , я открыл 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. Это вызывает ошибку?

1 Ответ

0 голосов
/ 14 февраля 2020

СТАРЫЙ ОТВЕТ
Проблема заключалась в том, что я загрузил не тот диск. 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, и это сработало.

Кроме того, поскольку я столкнулся с проблемами с R_USER и R_HOME, я сделал следующее в своем скрипте python:

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')

Ссылки: this

ОБНОВЛЕНО
Чтобы избежать os calls Мне удалось добиться желаемого поведения, включив R_USER и R_HOME в SYSTEM VARIABLE в ENVIRONMENT VARIABLES

  • R_USER : C: \ Users \ 96171 \ AppData \ Local \ Programs \ Python \ Python36 \ Lib \ site-packages \ rpy2
  • R_HOME : C: \ Program Files \ R \ R-3.6.2
...