(環境構築メモ) Mac OS X 10.11.x + Freemind + brew + gnuplot + Python 3.5.1 + virtualenv + scikit-learn + matplotlib + pandas + mecab + mecab-python
10.9からOS更新をサボっていたのですが、来年度から新入生相手にプログラミング教えることもあってなるべく同じ環境にしてた方がつまづくポイントを押さえておきやすいよねということで、バックアップ取ってから環境構築中です。昔はOS更新時にどのデータを移行するか選択できたのだけど、今はできないのね。細かいことを気にしないのであれば、ほぼOSアップデートするだけで済みました。
以下は比較的良く使うツール群(表題に列挙)を使えるようにするまでの道のりです。(学科専用のie-pedia的なものがあると嬉しいのかなと思いつつ、ブログにメモを残しておこう。
- Freemind: [ 本家サイト | メモ ]
- Xcode + Command Line Tools: [ メモ ]
- Homebrew: [ 本家サイト | メモ ]
- Gnuplot (+AquaTerm, XQuartz): [ メモ ]
- Python 3.5.1 + virtualenv: [ 本家サイト | メモ ]
- Scikit Learn + Matplotlib + Pandas: [ メモ ]
- mecab + unidic + mecab-python: [ メモ ]
Freemind
これ使えないと泣けるぐらいには必須アプリ。もともとインストールしてあったのは0.9.0なんですが、起動しようとするとJRE1.6入れろと怒られます。アプリ自体を更新したら良いかと思って最新版1.1.0をインストールしてみるものの状況変わらず。1.6 or laterって書いてるのにー。仕方ないのでJRE1.6入れてみると、今度は1.1.0起動できず。0.9.0は起動できるようになったのでひとまずこれで済ますことに。
Xcode + Command Line Tools
- Xcodeはインストール後に起動して「Xcode and iOS SDK License Agreement」にAgree。
- その後、ターミナルから「xcode-select –install」で Command Line Toolsのインストール。
Homebrew
- デフォルトの/usr/local以下を使うのは気持ちが悪いのでインストール先を /opt/homebrewに変更。ちなみに MacPorts の名残りで /opt/local も残ってたのだけど、これは消して置くのが正解でした。
sudo mkdir /opt/homebrew
cd /opt
sudo chown ${USER}:staff homebrew
curl -L https://github.com/Homebrew/homebrew/tarball/master | tar xz --strip 1 -C homebrew
brew update
brew upgrade
Gnuplot + AquaTerm + XQuartz
- 「gnuplotをHomebrewからインストールするときの手順」を参考にAquaTerm, XQuartzをインストール。
- このままだとgnuplotコンパイル時にlibiconv周りで文句を言われるので、まずはlibconvから整備して、gnuplotのインストール。
brew install homebrew/dupes/libiconv
brew link libiconv -force
brew install gnuplot --with-aquaterm --with-x11
Python 3.5 + virtualenv
- 数ヶ月前に3.5を試した限りではトラブルが多かったけど、先月出てた3.5.1は大丈夫そう。ということで、本家サイトから最新版3.5.1をダウンロードしてインストール。
- 標準のパッケージ管理ディレクトリにあれこれ追加インストールするのは使い勝手がよろしくないので virtualenv で環境作ってそこで作業。以下は実際には試していません(以前作業したものがそのまま使えた)。
# virtualenv, virtualenvwrapperのインストール
sudo pip install virtualenv
sudo pip install virtualenvwrapper
# virtualenv の設定
~/.zshrc に以下の設定を追加。
下記if文で指定した WORKON_HOME に仮想環境が構築される。
不要になったらここを削除しよう。
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
fi
mkvirtualenv --python=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 py35
scikit learn, matplotlib, pandasのインストール
- インストールそのものはすぐ終わり。py35の環境で下記を実行するだけ。
pip install -U numpy scipy matplotlib scikit-learn
pip install pandas
backend : TkAgg
cycler==0.9.0
matplotlib==1.5.1
numpy==1.10.4
pandas==0.17.1
pyparsing==2.0.7
python-dateutil==2.4.2
pytz==2015.7
scikit-learn==0.17
scipy==0.16.1
six==1.10.0
wheel==0.24.0
mecab + unidic + mecab-pythonのインストール
- 「brewコマンドでmecab用のIPA/Juman/UniDic辞書をインストールする方法」を参考にしつつ、以下の通りインストール。
brew install mecab
brew install mecab-unidic
dicdir = /opt/homebrew/lib/mecab/dic/unidic
ln -s /opt/homebrew/etc/mecabrc /usr/local/etc/mecabrc
# 元の記述
def cmd2(str):
return string.split (cmd1(str))
# 変更後
def cmd2(str):
return cmd1(str).split()
export CFLAGS=-Qunused-arguments
export CPPFLAGS=-Qunused-arguments
python setup.py build
sudo python setup.py install
注意点して、brew版mecabには-Ochasen出力オプションが無いらしい。このため、例えばここのコード例にあるように「mecab = MeCab.Tagger(‘-Ochasen’)」するとRuntimeErrorになります。-Ochasenを諦めて、「mecab = MeCab.Tagger()」として標準出力にした上で、ステミング時にはfs[6]参照してたところをfs[7]にすると良さそうです。少なくとも上記ページのコードはこれで動きました。