Сбой установки rPython, libpython отсутствует в путях компоновщика
Я получил ошибку в R при сборке пакета rPython, особенно той части, которая ссылается на libpython2.7:
gcc -std=gnu99 -I/foo/bar/R-3.1.1/lib64/R/include -DNDEBUG -I/usr/local/include \
-I/foo/bar/Python-2.7.6/include/python2.7 -I/foo/bar/Python-2.7.6/include/python2.7 \
-D PYTHONLIBFILE=libpython2.7.so -fpic -g -O2 -c pycall.c -o pycall.o
gcc -std=gnu99 -shared -L/usr/local/lib64 -o rPython.so pycall.o \
-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
/usr/bin/ld: error: cannot find -lpython2.7
Кажется, проблема в том, что хотя R (или rPython) понимал, какие правила -I компилируются с моей установкой Python, он не добавил соответствующие флаги компоновщика. Я не знаю почему, предположим, это ошибка.
4 ответа
Я исправил это, используя информацию отсюда: http://carlo-hamalainen.net/blog/2012/5/11/r-makeflags-rpath-and-building-packages
Перед запуском R сделать install.packages('rPython')
, сделай это:
export MAKEFLAGS='LDFLAGS=-L/foo/bar/Python-2.7.6/lib\ -Wl,-rpath\ /foo/bar/Python-2.7.6/lib'
Обратите внимание на пробелы с обратной косой чертой. Теперь вы можете запустить R и установить rPython. После установки вам больше не нужны MAKEFLAGS.
У меня тоже была такая же проблема, и я мог решить ее, просто установив пакет python-dev, если честно, я видел его на некоторых форумах.
Вы можете установить это из терминала, используя:
sudo apt-get install python-dev
и затем повторите попытку установки rPython.
Это сработало для меня!
Я получил ту же ошибку при попытке установить rPython, но моя ситуация осложнялась тем, что мне нужно было связать rPython с конкретной средой python, а не с версией системы по умолчанию.
Системный python по умолчанию был 2.6, что, похоже, вызывало проблемы при попытке связать его с моим 2.7, даже с MAKEFLAGS и переменной среды RPYTHON_PYTHON_VERSION ( rPython, использующий неправильную установку python в Mac OSX). Я предполагаю, что rPython по умолчанию установлен на python 2.6 моей системы, даже когда он дает MAKEFLAGS. Установка RPYTHON_PYTHON_VERSION=2 или RPYTHON_PYTHON_VERSION=2.7 заставила R жаловаться:
which: no python2.7-config in [long, redacted $PATH]
could not locate python2.7-config
ERROR: configuration failed for package 'rPython'
Решение в моем случае состояло в том, чтобы создать среду Python 3 и использовать как MAKEFLAGS, так и RPYTHON_PYTHON_VERSION, то есть:
export RPYTHON_PYTHON_VERSION=3
MAKEFLAGS='LDFLAGS=-L/foo/bar/Python-3.4.3/lib\ -Wl,-rpath\ /foo/bar/Python-3.4.3/lib' R CMD INSTALL ~/rPython_0.0-5.tar
Это заняло у меня слишком много времени, чтобы понять; надеюсь, это может помочь кому-то в подобной ситуации.
Спасибо за ответ Джон.
Краткое примечание для тех, кто использует дистрибутив anaconda:
$ export MAKEFLAGS='LDFLAGS=-L/home/USERNAME/anaconda2/pkgs/python-2.7.12-1/lib\ -Wl,-rpath\ /home/USERNAME/anaconda2/pkgs/python-2.7.12-1/lib'