2015-06-18 5 views
2

R построен из источника, установленного локально. R находится в ~/bin/R (что находится в моем PATH), а его библиотеки находятся в ~/lib64/R/. Установка rpy2 должна быть простой. Он находит правильное R просто прекрасным (так как он находится на пути). Тогда он не может найти библиотеки.Rpy2 не может найти мои R-библиотеки при установке

$python setup.py build install 
R version 3.2.1 (2015-06-18) -- "World-Famous Astronaut" 

... 

setup.py:211: UserWarning: No include specified 
    warnings.warn('No include specified') 
setup.py:222: UserWarning: No libraries as -l arguments to the compiler. 
    warnings.warn('No libraries as -l arguments to the compiler.') 

    Compilation parameters for rpy2's C components: 
     include_dirs = [] 
     library_dirs = [] 
     libraries  = [] 
     extra_link_args = [] 

И затем мы получаем миллион ошибок, которые не могут найти функции, которые находятся в библиотеках R.

Rpy2-х documentation says есть простой вариант для обозначения, где R или его библиотеки:

python setup.py build --r-home ~/lib64/R/lib install 

Но если вы сделаете это, то вы получите:

setup.py:222: UserWarning: No libraries as -l arguments to the compiler. 
    warnings.warn('No libraries as -l arguments to the compiler.') 

    Compilation parameters for rpy2's C components: 
     include_dirs = [] 
     library_dirs = [] 
     libraries  = [] 
     extra_link_args = [] 

usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] 
    or: setup.py --help [cmd1 cmd2 ...] 
    or: setup.py --help-commands 
    or: setup.py cmd --help 

error: option --r-home not recognized 

Похоже, что --r-home функциональность имеет были удалены. Как указать rpy2 на правильные библиотеки?


Edit:

ли теперь установлен R с:

./configure --prefix=${HOME} --enable-R-shlib 
make 
make install 

После этого, я могу установить rpy2 только с pip install rpy2. Но тогда мы все еще есть библиотечные проблемы:

import rpy2.robjects as robjects 
ImportError: libRblas.so: cannot open shared object file: No such file or directory 

Итак мне нужно, чтобы добавить это мой путь:

export LD_LIBRARY_PATH="~/lib64/R/lib:$LD_LIBRARY_PATH" 

И тогда все работает!

+0

@ Hack-R Почему? Я не понимаю, как это относится. – jeffalstott

+0

@ Hack-R Это не то, о чем мой вопрос. Я спрашиваю об установке Rpy2, и как при установке ему нужно знать местоположение R и связанных с ним материалов. На этом этапе Rpy2 даже не устанавливает. – jeffalstott

+0

Вы компилировали R как общую библиотеку?Кроме того, по какой-либо причине вы не выполняете 'pip install rpy2'? – lgautier

ответ

1

Если R находится в нетрадиционном месте, самым простым может быть помощь в настройке переменных окружения (более старые версии документа говорят о --r-home, но это был менее проверенный угол, и он был удален).

Try:

export PATH=~/bin/R:${PATH} 
export LD_LIBRARY_PATH=~/lib64/R/lib:${LD_LIBRARY_PATH} 
export PKG_CONFIG_PATH=~/lib64/R/lib/pkgconfig/:${PKG_CONFIG_PATH} 
+0

Спасибо! Я просто попробовал это, и это такое же поведение. На выходе все еще отображаются пустые списки для «Параметры компиляции для компонентов C rpy2». Примечание. Не существует каталога 'lib64/R/lib/pkgconfig'. Все, что находится в 'lib64/R/lib', -' libRblas.so' и 'libRlapack.so' – jeffalstott

+0

@ Решение lgautier для меня работало (без повторной компиляции' R'). Моя особая проблема заключалась в том, что я использовал «Microsoft R open». Для моей версии 'MRO' я изменил'/etc/environment' на 'LD_LIBRARY_PATH =" your_old_stuff: /usr/lib64/MRO-3.2.3/R-3.2.3/lib/R/lib ",' PATH = " your_old_stuff: /usr/lib64/MRO-3.2.3/R-3.2.3/lib/R/bin "и' PKG_CONFIG_PATH = "your_old_stuff: /usr/lib64/MRO-3.2.3/R-3.2.3/ lib/pkgconfig ", с' your_old_stuff', обозначающим ваши старые переменные env. Может помочь кому-то с подобными проблемами ... Обратите внимание, что я намеренно использовал '/ etc/environment', поскольку у меня есть несколько пользователей, которые называют' Rpy2'. – cryo111

+0

@ cryo111: спасибо за примечание, что rpy2 также работает с Microsoft R Open (я хотел попробовать в один прекрасный день, и это со времен революционных вычислений, но так и не нашлось времени). – lgautier

1

У меня был лучший успех здания rpy2 с нестандартными местах R, используя следующий относительный путь во время установки:

export LDFLAGS="-Wl,-rpath,~/lib64/R/lib" 

Обратите внимание, что вам нужно только для экспорта это в терминале, где вы затем запускаете python setup.py install, а не в своем .bashrc или тому подобное. Он сохранит этот путь библиотеки в компилируемых частях rpy2.

Это имхо лучший вариант, чем LD_LIBRARY_PATH, которые некоторые считают злом:

https://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the

http://linuxmafia.com/faq/Admin/ld-lib-path.html

Смежные вопросы