4

在构建 rPython 包时,我在 R 中遇到了一个错误,特别是链接到 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)理解使用我的 Python 安装编译哪些 -I 规则,但它没有添加相应的链接器标志。不知道为什么,估计是bug。

4

4 回答 4

8

我也有同样的问题,我可以通过安装 python-dev 包来解决它,老实说我在一些论坛上看到过。

您可以使用以下命令从终端安装它:

sudo apt-get install python-dev

然后重新尝试再次安装 rPython。

它对我有用!

于 2015-07-10T13:48:38.683 回答
2

我使用来自这里的信息修复它:http: //carlo-hamalainen.net/blog/2012/5/11/r-makeflags-rpath-and-building-packages

在运行 R to do 之前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。

于 2014-07-31T04:32:04.693 回答
2

我在尝试安装 rPython 时收到了完全相同的错误,但我的情况很复杂,因为我需要将 rPython 链接到特定的 python 环境而不是默认系统版本。

系统的默认 python 是 2.6,这似乎在尝试将其链接到我的自定义 2.7 时引起了问题,即使设置了 MAKEFLAGS 和 RPYTHON_PYTHON_VERSION 环境变量(rPython 在 Mac OSX 上使用错误的 python 安装)。我的猜测是,即使给它 MAKEFLAGS,rPython 也会默认使用我系统的 python 2.6。设置 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

我花了很长时间才弄清楚;希望这可以帮助处于类似情况的人。

于 2015-06-12T15:42:48.610 回答
0

感谢约翰的回复。

给那些使用 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'

于 2017-10-03T21:55:16.070 回答