Установка rpy2 для работы с R 3.4.0 на OSX

Я хотел бы использовать некоторые пакеты R, требующие R версии 3.4 и выше. Я хочу получить доступ к этим пакетам в python (3.6.1) через rpy2 (2.8).

У меня установлена ​​версия R 3.4, и она находится в /Library/Frameworks/R.framework/Resources. Однако, когда я использую pip3 install rpy2 для установки и использую python 3.6.1 в /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6) в качестве интерпретатора, я получаю сообщение об ошибке:

Traceback (последний вызов последним): файл "/Users/vincentliu/PycharmProjects/magic/rpy2tester.py", строка 1, в файле импорта из rpy2 robjects "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3 .6 / site-packages / rpy2 / robjects / init .py ", строка 16, в импорте rpy2.rinterface как файл rinterface" /Library/Frameworks/Python.framework/Versions/3.6/lib/ python3.6 / site-packages / rpy2 / rinterface / init .py ", строка 92, в rpy2.rinterface._rinterface import (baseenv, ImportError: dlopen (/Library/Frameworks/Python.framework /Versions/3.6/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so, 2): библиотека не загружена: @ rpath / libiconv.2.dylib Ссылка из: / Library / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 / site-packages / rpy2 / rinterface / _rinterface.cpython-36m-darwin.so Причина: несовместимая версия библиотеки: _rinterface.cpython-36m-darwin.so требуется версия 8.0.0 или новее, но libiconv. 2. dylib предоставляет версию 7.0.0

Что сначала казалось проблемой, вызванной Anaconda, поэтому я удаляю все файлы, связанные с Anaconda, но проблема не устраняется.

Затем я удалил rpy2, переустановил Anaconda и использовал conda install rpy2 для установки, который также устанавливает R версии 3.3.2 через Anaconda. Затем я могу изменить интерпретатор на /anaconda/bin/python и нормально использовать rpy2, но я не мог использовать пакеты R, которые мне нужны, потому что им нужна версия R 3.4 и выше. По-видимому, самая старая версия, которую может установить Anaconda, - 3.3.2, так что есть ли способ использовать rpy2 с R версии 3.4?

Я вижу два общих решения этой проблемы. Один из них - установить rpy2 через conda, а затем каким-то образом изменить его зависимый R на 3.4 в системе. Другое решение - устранить ошибку

Несовместимая версия библиотеки: _rinterface.cpython-36m-darwin.so требует версии 8.0.0 или более поздней, но libiconv.2.dylib предоставляет версию 7.0.0

После долгих усилий я не нашел ни одного хорошего результата.


person Vince    schedule 29.06.2017    source источник


Ответы (2)


Я удалил rpy2 и переустановил с --verborse. Затем я нашел

ld: предупреждение: игнорирование файла /opt/local/lib/libpcre.dylib, файл был создан для x86_64, который не является связанной архитектурой (i386): /opt/local/lib/libpcre.dylib ld: warning: ignoring file / opt / local / lib / liblzma.dylib, файл был создан для x86_64, который не является связываемой архитектурой (i386): /opt/local/lib/liblzma.dylib ld: предупреждение: игнорирование файла / opt / local / lib / libbz2 .dylib, файл был создан для x86_64, который не является связываемой архитектурой (i386): /opt/local/lib/libbz2.dylib ld: warning: игнорировать файл /opt/local/lib/libz.dylib, файл был создан для x86_64, который не является связываемой архитектурой (i386): /opt/local/lib/libz.dylib ld: предупреждение: игнорирование файла /opt/local/lib/libiconv.dylib, файл был создан для x86_64, который не является архитектурой связанный (i386): /opt/local/lib/libiconv.dylib ld: warning: игнорируя файл /opt/local/lib/libicuuc.dylib, файл был создан для x86_64, который не является связываемой архитектурой (i386): / opt /local/lib/libicuuc.dy lib ld: предупреждение: игнорирование файла /opt/local/lib/libicui18n.dylib, файл был создан для x86_64, который не является связываемой архитектурой (i386): /opt/local/lib/libicui18n.dylib ld: warning: игнорирование файла /opt/local/Library/Frameworks/R.framework/R, файл был создан для x86_64, который не является связываемой архитектурой (i386): /opt/local/Library/Frameworks/R.framework/R

Итак, я предположил, что причина в несовместимости архитектуры libiconv в opt/local, из-за чего make откатился к устаревшей libiconv в usr/lib. Это странно, потому что моя машина должна работать на x86_64, а не на i386. Затем я попробовал export ARCHFLAGS="-arch x86_64" и переустановил libiconv, используя порт. Это решило проблему.

person Vince    schedule 05.07.2017
comment
Ура ... наконец-то сработало. Хотя это действительно некрасиво - заставлять смешивать здесь разные менеджеры пакетов. - person AlexDeLarge; 25.10.2017
comment
@Vince Не могли бы вы подробнее рассказать о командах? где вы добавили команды экспорта archflags? используя пип? - person Bhishan Poudel; 14.04.2019

Я удалил установленную версию pip и установил ее из источника python setup.py install при загрузке https://bitbucket.org/rpy2/rpy2/downloads/. FWIW также вообще не использует Anaconda.

person cyniphile    schedule 18.12.2018