• Article
  • anacondaの仮想環境を用いてJupyter Notebook上でRを動かす

    posted at 2019年4月28日

    *本記事の対象マシン → Mac, Linux(テスト環境:CentOS7.4)

    Jupyter Notebookは、データ解析をする上でとても便利なツールです。

     

    もともとJupyterはpythonを便利にするために開発されたツールですが、Rも動けば統計が手軽にできて超嬉しい。

     

    しかしR言語環境はちょっとしたミス操作で壊れやすく、Jupyterに乗っけるのも結構大変です。

     

    激つよエンジニアであれば壊すことはないでしょうが、プログラミングが本業ではない解析屋にとって、プログラム言語を極めている時間はそんなにありません。

     

    したがってRをJupyterで動かすにあたって、以下のような環境構築ができるとハッピーです。

     

    • 少ない学習コストかつ短時間でインストールできる
    • もしRの環境が壊れてもシステム全体に影響せず、すぐに新しい環境をつくり直せる

     

    これを実現するのが、anacondaの仮想環境です。

     

    以下具体的な手順を書きます。

     

    anacondaのインストール

    これは先人のわかりやすい記事が沢山あるので、以下のURLを参考にして各自頑張ってください。

     

    Mac → https://qiita.com/kota_kuri/items/67f706814239f2940e33

     

    Ubuntu → https://qiita.com/betweens/items/7d2b924309669b12add6

     

    僕はpyenv + anacondaが好きなので、上に紹介したサイトはpyenv + anacondaの環境構築です。

     

    anacondaだけのインストールでも問題ありません。

     

    とりあえずcondaコマンドが動けばOK。

     

     

    condaの仮想環境を作る

    ざっとcondaの仮想環境を実感するため、とりあえず何か動かしてみましょう。

     

    conda info -e
    (out)# conda environments:
    (out)#
    (out)base * /Users/dermasugita/.pyenv/versions/anaconda3-5.3.1

     

    上は現在anacondaにどんな環境があるかを取得するコマンドです。

     

    最初はbaseという環境だけだと思います。

     

    次に早速Rの仮想環境を作ってみましょう。

     

    conda create -n r_env r-essentials r-base r-devtools

     

    少し時間がかかりますが、これだけでRの環境が出来ます。

     

    ではもう一度

     

    conda info -e
    (out)# conda environments:
    (out)#
    (out)base * /Users/dermasugita/.pyenv/versions/anaconda3-5.3.1
    (out)r_env /Users/dermasugita/.pyenv/versions/anaconda3-5.3.1/envs/r_env

     

    r_envという環境が追加されたのが確認できたと思います。

     

    * マークの意味は「現在あなたはbaseという環境にいますよ!」という意味です。

     

    ではどうすればr_envという環境に移動できるかというと、

     

    source activate r_env

     

    これでOKです。

     

    再び現在の環境を確認すると、* がr_envのところに移動していることが確認できると思います。

     

    conda indo -e
    (out)# conda environments:
    (out)#
    (out)base /Users/dermasugita/.pyenv/versions/anaconda3-5.3.1
    (out)r_env * /Users/dermasugita/.pyenv/versions/anaconda3-5.3.1/envs/r_env

     

    逆に、r_envという環境から脱出してbaseに戻るには、

     

    conda deactivate

     

    とすればOK。

     

    今回テストした環境はMacとCentOS7.4ですが、実はこの操作、Ubuntuではどうなるかわかりません。例えば僕がUbuntuで試した際、source activate r_envが動きませんでした。(which activateでactivateコマンドのPATHを調べ、そのコマンドファイルを直接使うことで解決しましたが)

     

     

    Jupyterの設定

    ここまで来れば、すでにjupyterコマンド自体はすでにインストールされています。

     

    そこでまず、Jupyterのパスワード設定をします。

     

    ipython
    (out) [1] from notebook.auth import passwd
    (out) [2] passwd()
    (out) Enter password:
    (out) Verify password:
    (out) Out[3]: 'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    (out) [3] exit

     

    出力された’sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’はクリップボードかなんかにコピーしておいてください。

     

    次に設定ファイルを作ります。

     

    jupyter notebook --generate-config

     

    これで ~/.jupyter/jupyter_notebook_config.py が生成されます。

     

    中身を開き、以下の部分を検索してコメントアウトしつつ編集してください。

     

    c.NotebookApp.ip = '0.0.0.0'
    c.NotebookApp.open_browser = False
    c.NotebookApp.password = 'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    c.NotebookApp.port = 8888

     

    c.NotebookApp.passwordへは、先ほどクリップボードにコピーした文字列をペーストしてください。

     

    これで設定は完了です。

     

    次にターミナル上のどこでもいいので次のコマンドを実行。

     

    R
    (out)> IRkernel::installspec()

     

    これで全ての工程が終了です。

     

    ターミナルでHOMEディレクトリに移動し、

    jupyter notebook

     

    を実行し、少し待ってブラウザでlocalhost:8888にアクセスすれば、めでたくJupyter Notebookが動くと思います。

     

     

    環境の保存・複製

    今回の記事で作成した環境はJupyterが動く最低限の環境です。

     

    なので必要性に応じて新しいRのlibraryをインストールしたり、pythonを同時に使う人であれば、そのlibraryをインストールしたり、どんどん複雑になっていくはずです。

     

    でもそうして出来上がった居心地の良い環境がもし壊れてしまったら、それを復元するのは大変です。

     

    そこでanacondaの仮想環境には、現在の環境を保存したファイルを作成でき、そのファイルを元に全く同じ環境を無限に複製できるのです。

     

    嬉しいですね。

     

    まず保存の方法は、保存したい環境上で

     

    conda env export > r_env.yml

     

    で終わり。

     

    r_env.ymlというファイルが、コマンドを実行したディレクトリに作成されます。

     

    これを元に環境を複製する方法は、

     

    conda env create -n r_env2 -f r_env.yml

     

    です。

     

    簡単ですね。

     

    ということで安全安心快適な環境構築をお楽しみください。

     

    以上。