2017-06-29 2 views
1

Je voudrais utiliser certains paquets R nécessitant R version 3.4 et supérieure. Je veux accéder à ces paquets dans python (3.6.1) à travers rpy2 (2.8).Installation de rpy2 pour travailler avec R 3.4.0 sur OSX

J'ai la version R 3.4 installé, et il est situé dans /Library/Frameworks/R.framework/Resources Cependant, lorsque j'utilise pip3 install rpy2 pour installer et utiliser le python 3.6.1 dans /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6) comme mon interprète, je reçois l'erreur:

Traceback (most recent call last): File "/Users/vincentliu/PycharmProjects/magic/rpy2tester.py", line 1, in from rpy2 import robjects File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2/robjects/init.py", line 16, in import rpy2.rinterface as rinterface File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2/rinterface/init.py", line 92, in from 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): Library not loaded: @rpath/libiconv.2.dylib Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so Reason: Incompatible library version: _rinterface.cpython-36m-darwin.so requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0

Lequel semblait d'abord un problème causé par Anaconda, et donc je supprime tous les fichiers liés à Anaconda mais le problème persiste. J'ai ensuite désinstallé rpy2, réinstallé Anaconda et utilisé conda install rpy2 pour installer, qui installe également R version 3.3.2 à travers Anaconda. Je peux alors changer l'interpréteur en /anaconda/bin/python et utiliser rpy2 très bien, mais je ne pourrais pas utiliser les paquets R qui m'intéressent car ils ont besoin de R version 3.4 et supérieure. Apparemment, la version la plus ancienne que peut installer Anaconda est 3.3.2, donc est-il possible d'utiliser rpy2 avec R version 3.4?

Je peux voir deux solutions générales à ce problème. L'une est d'installer rpy2 par conda et puis en quelque sorte changer son R dépendante de la 3.4 dans le système. Une autre solution consiste à résoudre l'erreur

Incompatible library version: _rinterface.cpython-36m-darwin.so requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0

Après beaucoup de difficultés, je n'ai trouvé aucun bon résultat avec l'un ou l'autre. Je ai désinstallé rpy2 et réinstallé avec --verborse

Répondre

1

J'ai désinstallé rpy2 et réinstallé avec --verborse. puis j'ai trouvé

ld: warning: ignoring file /opt/local/lib/libpcre.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libpcre.dylib ld: warning: ignoring file /opt/local/lib/liblzma.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/liblzma.dylib ld: warning: ignoring file /opt/local/lib/libbz2.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libbz2.dylib ld: warning: ignoring file /opt/local/lib/libz.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libz.dylib ld: warning: ignoring file /opt/local/lib/libiconv.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libiconv.dylib ld: warning: ignoring file /opt/local/lib/libicuuc.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libicuuc.dylib ld: warning: ignoring file /opt/local/lib/libicui18n.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libicui18n.dylib ld: warning: ignoring file /opt/local/Library/Frameworks/R.framework/R, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/Library/Frameworks/R.framework/R

Je supposé la raison est l'incompatibilité de l'architecture du libiconv dans opt/local, ce qui fait retomber sur le libiconv outdate dans usr/lib. C'est étrange car ma machine devrait fonctionner sur x86_64 et non sur i386. J'ai ensuite essayé export ARCHFLAGS="-arch x86_64" et réinstallé libiconv en utilisant le port. Cela a résolu le problème.

+0

Bravo ... qui a finalement fonctionné. Même s'il est vraiment moche d'être obligé de mélanger différents gestionnaires de paquets ici. – AlexDeLarge