1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rpy2のインストール(Windows向け )

Posted at

rpy2とはPythonからRを実行できるようにするライブラリーです。

Windowsでのrpy2のインストール方法が説明されているサイトが無かったので作成しました。pipで簡単にできましたが、逆に出来ないとか苦労したとかいうサイトがあふれています。なぜそのような混乱が生じているのかはわかりませんが。

環境

  • rpy2: 3.4.2
  • OS: Windows 10 May 2020 Update(バージョン2004)
  • Python: 3.8.8 (Anaconda)
  • R: 4.0.4

Rがないとパッケージのインストールに失敗します。また、インストール時にバージョン情報をレジストリーに登録しましたが、Rのパスは環境変数に設定していません。

pipでインストール

公式のドキュメントには「Windowsの人はDocker使ってね キラッ☆」と書かれていますが、他のパッケージと同様pipでインストールできます。( 彡()() なんで最初にこれを試さなかったか… )

PowerShell
> pip install rpy2

オフライン環境の場合は、rpy2PyPI - rpy2 download filesからダウンロードしたソース ファイル(rpy2-3.4.2.tar.gz)のパスで置き換えます。必要に応じてtzlocalも手動でインストールします。

試しに以下を実行してみます。ちゃんと円周率の値が出れば成功です。

python
import rpy2.robjects as robjects
pi = robjects.r['pi']
print(pi[0]) #3.141592653589793が出ればOK

condaでインストール

これで終わりだとつまらないので、「Anacondaなのでpipを使うのは…」と思った方のために、もう一つネタを追加します。

condaの場合は、conda install rpy2だと失敗するため、
こちらを参考に、以下のコマンドでPyPIのソースコードからcondaパッケージを作成してインストールします:

Anaconda_Poershell_Prompt
> conda install -n base conda-build     # ビルドに必要なパッケージのインストール
> conda skeleton pypi rpy2  # スケルトン作成
> conda build rpy2          # ビルド
> conda install パッケージのパス

パッケージのパスは(Anacondaインストール先)/conda-bld/win-64/rpy2-3.4.2-py38_0.tar.bz2です、たぶん。私が実行したときには、3つめのコマンドで、ビルド後のテスト中に以下のエラーが出たため、パッケージのパスが(Anacondaインストール先)/conda-bld/broken/rpy2-3.4.2-py38_0.tar.bz2になってしまいました。ipython入っているのになぜエラーが出るのか。。。

(略)
ModuleNotFoundError: No module named 'IPython'
(%PREFIX%) %SRC_DIR%>IF 1 NEQ 0 exit /B 1
Tests failed for rpy2-3.4.2-py38_0.tar.bz2 - moving package to C:\ProgramData\Anaconda3\conda-bld\broken
(略)
TESTS FAILED: rpy2-3.4.2-py38_0.tar.bz2

Pythonでrpy2.robjectsのインポート時に以下のエラーが出たら、tzlocalcondaでインストールします。

ModuleNotFoundError: No module named 'tzlocal'

蛇足:.whlファイル作成 & pipでインストール

この部分は蛇足です。ソースコードから.whlファイルをビルドしてインストールする方法を説明します。

  1. PYPI - rpy2 download Filesからソース ファイルをダウンロード
  2. 7-Zipなどで.tar.gzファイルを解凍
  3. Powershellで以下のコマンドを実行
PowerShell
> cd 解凍先フォルダー   # 解凍先フォルダーはsetup.pyがあるフォルダー
> python setup.py bdist_wheel   # パッケージ作成。`dist`フォルダーにrpy2-3.4.2-py3-non-any.whlができる。
> pip install ./dist/rpy2-3.4.2-py3-non-any.whl # インストール
> pytest --pyargs 'rpy2.tests'

最後のテストで以下が出てきますが、たぶん大丈夫です。

(略)
=================================================================== short test summary info ====
FAILED rinterface/test_vector_str.py::test_non_asciil - UnicodeDecodeError: 'utf-8' codec can't 
======================================== 1 failed, 696 passed, 64 skipped, 4 xfailed, 1 xpassed,
(略)

試してみて失敗したこと

非公式バイナリーからのインストール

非公式バイナリーはrpy2 2.9.5, Python 3.7で更新が止まっているため、Python 3.8には使えませんでした。公式のドキュメントにも以前は非公式バイナリーの紹介がありましたが、現在(3.4.x)はなくなっています。

conda-forgeからインストール

condaのチャネルにconda-forgeを追加して、codnda install rpy2を実行してみましたが、Python 3.8以上だとダメでした。

ソースコードのC言語部分だけをビルド

リンクエラーが出まくりました。そもそもCのビルドは必要ありませんでした(.whlファイルにそれっぽいものが含まれていない)。

参考

全く気乗りしないけどRの勉強を始めるか
('A`)...

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?