magattacaのブログ

日付以外誤報

HomebrewとAnacondaとRDKitを入れ直した話

3連休初日ですが皆さまいかがお過ごしでしょうか?私は連休続きで週5日勤務に耐えられない身体になってしまいました・・・

さて、CBIにもケモインフォ討論会にもいけなくて残念に思っていたところ、私のようなパソコン苦手な初心者にとってはとても嬉しい書籍が2冊出版されました!

坊農先生の「生命科学者のためのデータ解析実践道場」

生命科学者のためのDr.Bonoデータ解析実践道場

生命科学者のためのDr.Bonoデータ解析実践道場

  • 作者:坊農秀雅
  • 発売日: 2019/09/27
  • メディア: 単行本

金子先生の「化学のためのPythonによるデータ解析・機械学習入門」

化学のための Pythonによるデータ解析・機械学習入門

化学のための Pythonによるデータ解析・機械学習入門

  • 作者:弘昌, 金子
  • 発売日: 2019/10/23
  • メディア: 単行本(ソフトカバー)

買うしかない!ということで早速、amazonでポチッとしたあと、久しぶりにターミナルで 「conda install XXXX」 したらMacが異音を発生してターミナルがおかしくなりました・・・

brewもcondaも「comand not found・・・」

・・・で、泣きながらもう一回環境構築(?)したので、備忘録を残します。

やったこと・・・

私のパソコン:「MacBook Pro(2017) / macOS High Sierra バージョン 10.13.6」

HomebrewとAnacondaをインストール

こちらの記事をそのままやりました。(引用記事ですみません)*1

# Homebrewのインストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Hombrew のアップデート
brew update --force && brew upgrade

# pyenvのインストール
brew install pyenv
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
exec $SHELL -l

このあと「.bash_profile」をテキストエディタで開いて追加で書き込みをして以下のようにしました。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

「export ~~~」の2行を書き込まないとうまく動かなかった・・・

ついで、Anacondaをインストール。 RDKitは「Python 2系はもうサポートしないよ!」、ということなのでPython3系で新しそうなバージョンを入れました。

# インストール可能なバージョンの確認
pyenv install -l

# Python version 3系のをインストール
pyenv install anaconda3-5.3.1
pyenv global anaconda3-5.3.1

インストールできました!が、バージョンが新しいAnaconda (4.4以降?)はこのままでは使えないらしく、 ターミナルで「configureをちゃんとしなさい!」みたいなエラーが出ました。

エラーメッセージにしたがって、echoを実施して「.bash_profile」を修正したら使えるようになりました。

# 現在のユーザーがcondaを使えるようにする。
# 下の行の「XXXXX」は実際にはユーザーの名前が入っています。アホすぎる名前で恥ずかしいので伏せてます。
echo ". /Users/XXXXX/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh" >> ~/.bash_profile

# condaのbase (root) environmentをPATHにずっと追加するようにする
echo "conda activate" >> ~/.bash_profile

ここまでやって、「.bash_profile」は以下の状態になっていました。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

. /Users/XXXXX/.pyenv/versions/anaconda3-5.3.1/etc/profile.d/conda.sh
conda activate

「/conda.sh」の行が書いてあれば「"$PYENV_ROOT/bin:」の行は不要?みたいな記述も見かけましたが とりあえず動いているのでそのままにしてます。 ・・・私みたいな初心者にはPATHとか依存とか意味不明でつらいです。

以上でHomebrewとAnacondaの準備終了です。

RDKitのインストール

RDKitのドキュメントと 「化学の新しいカタチ」さんの記事にしたがってRDKitをインストールします。*2*3

# Pythonのバージョンを確認
python --version

# pythonのバージョンを指定して RDKitをインストール
conda create -c rdkit -n my-rdkit-env python=3.7 rdkit

# 新しく作ったconda 環境(my-rdkit-env)をアクティベート
conda activate my-rdkit-env

これでRDKitもインストールおしまい。

ですが、初心者の味方 Jupyter notebook からRDKitを利用するためにはもう一手間が必要です。

Jupyter notebookからRDKitを使えるようにする

ここまでの設定のまま Jupyter notebook から RDKit を import しようとしても「ModuleNotFoundError」というエラーが出ます。

どうもこちらの記事 によると、RDKit用につくった仮想環境(my-rdkit-env)にはjupyterをまだインストールしていないので、デフォルトのbase環境(?)のjupyter が起動されていることが原因のようでした。*4

対処方法としては2通りありそうでした。
方法①: 新しい仮想環境をactivateしたあとで、jupyterをインストールする
方法②: jupyter notebook上でカーネルを切り替えられるようにパッケージをインストールする。

今回は方法①を試した後で、方法②のパッケージもインストールしてみました。

# RDKitの仮想環境がactivateされている状態でjupyterをインストール
conda install jupyter

この後、jupyter notebookを起動したら無事RDKitをimportできました!

ついでにこちらの記事 を参考にカーネルを切り替えるパッケージをインストールします。*5 引用記事そのままで恐縮ですが・・・

# パッケージのインストール
pip install environment_kernels

#jupyterの設定ファイル作成
jupyter notebook --generate-config

上の「environment_kernels」のインストールの際に「PyHamcrestが入ってないよ!」みたいに怒られた時は「pip install PyHamcrest」を先にやってから、もう一度インストールすれば良いみたいです。

で、作成した設定ファイル「~/.jupyter/jupyter_notebook_config.py」をテキストエディタで開いて最後の行に以下を追記・・・

c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.conda_env_dirs=['. /Users/XXXXX/.pyenv/versions/anaconda3-5.3.1/envs/']

この後で記事に従って念のため

pip install jupyter

とやったら、「もう入ってるよ!」と言われました。・・・ですよね。

jupyter notebookを起動して確認してみます。

f:id:magattaca:20191102174217p:plain

新しいNotebookを作る際にどの環境を使えるか選べるようになりました!試しに「Environment(conda_my-rdkit-env)」を選択して新しいnotebookをつくりrdkitをimportしてみます。

f:id:magattaca:20191102174238p:plain

警告出てますがとりあえずこれでも無事動きました!ついでにもう一つの仮想環境「Environment(conda_anaconda3_5.3.1)」では・・・

f:id:magattaca:20191102174255p:plain

となりました。ようやくcondaの仮想環境という考え方がちょっとだけわかった気がします。

pymolのインストール

RDKitがインストールできたので、ついでにPymolもインストールしておきます。

これはラボォ先生の記事で一発です。*6

brew tap brewsci/bio
brew install pymol

おしまい。

(おまけ)古いHomebrewとAnacondaの削除

ちなみに古い環境の削除ですが、PATH(?)がおかしくなっているのかターミナルを起動したホームディレクトリからはHomebrewのアンインストールコマンドが使えませんでした。

どうもHomebrewは「Cellar」という名前のフォルダに入っているようなので、ディレクトリを移動してからコマンドをコピペしたらアンインストールできました。*7

# それっぽい場所に行く
cd /usr/local/Cellar

# アンインストールコマンドをコピペ
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

ここに行き着くまでに2週間かかった・・・・。

Anacondaは「anaconda-clean」というので削除するのが正当法(?)のようでしたが、 どうにもうまくいかなかったのでそれっぽいフォルダをゴミ箱に放り込んで捨てました。*8

おしまい

以上、環境構築の備忘録でした。何番煎じか分からないコピペ記事で申し訳ないですが備忘録ですのでご容赦ください。
なんとか動く感じになったので先生がたの本を読み始めたいと思います。

記載の誤り等ありましたらご教示いただければ幸いです。

っていうかRDKitの jupyter extensionとは一体?調べても分からなかった・・・