5

Pythonパッケージrpy2のインストールに問題があります。すでにRを共有ライブラリとしてコンパイルしましたが、管理者権限がないため、次のコマンドでrpy2をインストールしようとしています。

pip install -user rpy2

ただし、次のエラーが発生します。

./rpy/rinterface/_rinterface.c:86:31:致命的なエラー:readline / readline.h:そのようなファイルまたはディレクトリはありません

コンパイルが終了しました。

エラー:コマンド'gcc'が終了ステータス1で失敗しました

ダウンロードreadlineしたもの:

/some/path/readline-6.2/

私が見ることができる場所readline.h(私も念のためにコンパイルreadlineしました)

私の質問:

ヘッダーのコンパイルエラーを回避するために、どうすればrpy2この場所を認識(またはpip)できますか?readline.h

4

4 に答える 4

2

readlineをダウンロードするだけでなく、実際にインストールしてから、とでポイントrpy2する必要がCFLAGSありLDFLAGSます。

このアプローチを試してください。それは私にとってほとんど機能しています-私は同じ問題を抱えていますが、rpy2が私のhomedirインストールの代わりにシステムRに対してリンクしているように見える追加のしわがあります。

まず、readlineをにダウンロードし~/src/readline-6.2、でインストールしました./configure --prefix=$HOME && make && make install。(ソースをダウンロードするだけでなく、どこかにインストールする必要があります。)

次に、Rを再コンパイルしました

CPPFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME --enable-BLAS-shlib --enable-R-shlib
make
make install

Rは間違いなくそのreadlineを使用しています:

$ ldd ~/lib64/R/lib/libR.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007f8104207000)

Pythonの自宅インストールでも同じです(3.2.3、h5pyはまだ3.3で動作しないため):

CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME
make
make install

そしてまた:

$ ldd ~/lib/python3.2/lib-dynload/readline.cpython-32m.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007fbfff5c2000)

次に、rpy2ソースをダウンロードして、次のようにビルドしました。

CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
python3 setup.py build --r-home $HOME/lib64/R install

これは成功したように見え、右へのリンクldd.sosを使用しています...しかし、明示的であるにもかかわらず、私の代わりにシステムにリンクしています。site-packages/rpy2libreadlineR--r-home

于 2013-02-12T01:44:17.787 に答える
1

よりシンプル :

yum install readline-devel.x86_64

CentOS7で私のために走る

debian/ubuntuの場合

apt-get install libreadline-dev
于 2016-04-04T11:39:33.503 に答える
-2

Linuxでは、ニュースライブラリを取得するためにsudoapt-getアップグレードが必要になる場合があります。

于 2013-02-10T04:52:08.390 に答える
-2

これは別のオプションですが、ルート権限も必要です... sudo apt-get install libreadline-dev

于 2013-02-10T05:06:49.333 に答える