2022年2月7日月曜日

RStudio で Python を使うための環境構築: Reticulate パッケージの導入

20220207_Blogger0018

昔から現在に至るまで、自分の研究のデータ解析では R のお世話になることが多いです。R は RStudio という統合開発環境から使っています。RStudio は非常に洗練されていて、さらに無料で使うことができるのでとてもおすすめです。

近年、データ解析は大規模化・高度化・複雑化の一途をたどっており、その流れは自分が専門としている生態学でも同様です。流行りの 「機械学習」 は R でも実行可能ですが、Python の方がより充実した解析パッケージが用意されており、機械学習を研究のメインとするのであれば Python が第一の選択肢となるでしょう。

今回は、Python に興味がある R ユーザー向けに、RStudio を使って Python を使い始めるための環境構築について書きたいと思います。

なお、今回の記事を書くにあたって使用した環境については以下の通りです:

  • macOS 12.1 (M1 chip)
  • R 4.1.2
  • RStudio 2021.09.2+382
  • Pyton 3.9.5

したがって、本記事には Windows には適用されない記述もあります。

(*今回 Apple の M1 チップを搭載した Macbook Pro に乗り換えたタイミングで、 M1 Macbook Pro 特有のプロセスについてはカッコ書きで記載します)

(*また、比較的新しい M1 Mac でトライしたので、本記事の状況は近い将来変わるかもしれません。ご注意ください)

R と RStudio のインストール

まずは R と RStudio のインストールが必要です。Python を使うための特別な対応は必要はありません。

(* 2022年2月6日現在、mac 向けには R-4.1.2.pkg [Intel Mac 向け] と R-4.1.2-arm64.pkg [M1 Mac 向け] が用意されています。が、結論から言うと今回の目的達成にはなぜか R-4.1.2.pkg を選ぶとよかったです。本記事の一番下を参照)

RStudio はこちらからダウンロードできます。Free バージョンで問題ありません。

Miniconda のインストール

RStudio 経由で Python を使う際には、Python の実行環境の一つである Miniconda をインストールする必要があります (Miniconda は Anaconda の縮小版)。

Miniconda のウェブサイト

Miniconda は Windows, Mac, Linux 向けにそれぞれバージョンが用意されているので、適するものを選んでダウンロードします。

Miniconda のインストーラー

(*M1 Mac 向けには Miniconda3 macOS Apple M1 64-bit bash というのがありますが、ここでは Miniconda3 MacOSX 64-bit pkg を選びます。これも本記事の一番下を参照))

Reticulate 向けの仮想環境の構築

Miniconda (もしくは Anaconda) がインストールされるとターミナルの様子が少し変わります。下のような感じです。

  • インストール前: ushio@MacBook-Pro ~ %
  • インストール後: (base) ushio@MacBook-Pro ~ %

(base)という文字が現れます。これは、conda 管理下の base という環境に現在いることを表しています。ここから Miniconda/Anaconda が提供する様々なconda のコマンドを使用することができます。

Reticulate パッケージ導入の準備

RStudio 内で Python を使用するために、Reticulate という R パッケージを利用します。この Reticulate、いきなり RStudio 内からインストールしても問題ありません。しかし、Reticulate 専用の仮想環境を用意して、R 経由で Python を使う際は常にその仮想環境を利用したほうが無用な混乱を避けられます。そこで、R 内ではなくターミナルで 次のコマンドを入力して仮想環境を作成しておきます。

# r-reticulate という仮想環境を作成 (名前は何でもいい)
# x.x.xx には使用する Python のバージョンを指定
conda create -n r-reticulate python=x.x.xx

# r-reticulate ができたことを確認
conda info -e

# 仮想環境 r-reticulate に入ってみる
conda activate r-reticulate

# 仮想環境 r-reticulate から出てみる
conda deactivate

RStudio から Reticulate のインストール

Reticulate 用の仮想環境が準備できたら、RStudio を立ち上げて Reticulate パッケージをインストールします。

# Reticulate のインストール
# RStudio のツールバーの機能を使っても可
install.pacakges("reticulate")

インストール後、library(reticulate) でパッケージを呼び出し、Python 環境に入る関数 repl_python() を実行してみます。すると、Python が認識されない場合は 「Miniconda をインストールしますか?」 というメッセージが出てきます。

「Miniconda をインストールしますか?」 のメッセージ

上記 「Miniconda のインストール」 「Reticulate 向けの仮想環境の構築」 を行っていない場合はここでインストールすることもできます。ただし、これまでここで RStudio 経由で Miniconda をインストールして、Python 環境が混乱したことがあり、それもあって事前に Miniconda 導入 & 仮想環境の構築をするようにしています。この辺はまだいろいろと検証の余地がありそうです。

(*M1 Mac 向けの Miniconda3 macOS Apple M1 64-bit bash を利用して Miniconda をインストールしたときはこのメッセージは出てきませんでした)

この記事に従って、すでに Miniconda をインストールしているにも関わらずこのメッセージが出た場合は、ここでは n を選んで RStudio による Miniconda のインストールをスキップします。

Reticulate で使用する Python を指定

library(reticulate) でエラーが出なければ、Miniconda 関係のメッセージが出る出ないに関わらず、Reticulate そのもののインストールは成功しています。

そこで RStudio を再起動して、再度 library(reticulate) で Reticulate を呼び出します。そして、repl_python() を実行する前に、以下のコマンドで使用する Python を指定します。

use_python("/opt/miniconda3/envs/r-reticulate/bin/python3", required = T)

/opt/miniconda3/envs/r-reticulate/bin/python3 の部分は自分の環境に応じて変えてください。ターミナルで r-reticulate 環境に入った状態で which python または which python3 とすると r-reticulate で使用している Python の場所を教えてくれます。

使用してほしい Python をうまく認識させることができれば、repl_python() を実行したときに指定した Python のパスが表示されます。

使用する Python を指定して、Python 環境に入る

R を使用中であることを示す > ではなく、Python を使用中であることを示す >>> がでれば、きちんと Python 環境に入れています。

Python パッケージのインストール

新しいパッケージを追加したい場合は、R 環境で retuculate::conda_install() 関数を使用する か、もしくはターミナルで r-reticulate 環境に入って、conda install を使うと入れることができます。自分はターミナルから conda install で入れることが多いです。

おまけ

お得ポイント

もちろん Python は RStudio からでなくても使えますが、RStudio から使うといいこともあります。一つのスクリプト内で、R と Python を行ったり来たりできるので、機械学習は Python にまかせて、作図は R、ということがスムーズにできます。

(私見ですが、作図に関しては R の方がいいように思っています。ただし、自分のプログラミング能力が R >> Python であることによるバイアスは否めません)

あと、Reticulate は直接関係ありませんが、Python で書かれたスクリプトが少しずつ読めるようになってくるので、解析アルゴリズムの勉強が捗るようになります。

M1 Mac ではどうする?

最初、「M1 Mac 向け」 とあった R-4.1.2-arm64.pkg で R をインストールしました。この場合、Miniconda3 macOS Apple M1 64-bit bash でインストールした Miniconda でも問題なく Reticulate が使用できました。ただし、こちらの方法では Bioconductor からの R パッケージのインストールでつまづくことがあるようです。DNA 配列解析用の R パッケージ DADA2 のインストールでつまづきました。DADA2 のヘビーユーザーなので、これは困る、ということでここで紹介した方法で落ち着きました。近いうちにこの状況は変わるかもしれません。

また、Miniconda ではなくて Miniforge という Python 環境もあるようで、M1 Mac と関連してウェブ情報がヒットします。Reticulate で Miniforge が使えるかどうかは試していませんが、試してみるのもいいのかもしれません。

関連発表しました

RStudio と Python については 2021 年 11 月の個体群生態学会で関連の発表をしました。機会があればこの発表に関連した追記をするかもしれません。

Written with StackEdit.

0 件のコメント:

コメントを投稿

Empirical Dynamic Modeling with rEDM: (2) Near-future forecasting (Simplex projection)

20231015_Blogger0021 *This is an English version of my previous post (first translated by ChatGPT, checked and edited ...