Сбой установки 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'

Другие вопросы по тегам