そろそろかじっておいたほうがいいかなと
関連書籍をあさっていると、お手軽にWindowsの上に直接Python立ててJupyter立てる方法しか書いてない本があったりするんですけど、Windows環境をあんまり汚したくないので、いつでもまっさらにできる仮想環境上に立てたいなと。
機械学習の勉強やるのにAnacondaがいいらしいと聞いて、日曜日の午後にドトールに逃避している時間の中でやってみました。
近所のドトール、無線LAN対応(w2、Wi-Fi暗号化なし、ゲストコード認証型、1回3時間まで)に対応したようなので、そのネット環境を存分にお借りして。
例によって全部rootでやります。root以外で構築する場合は、適宜sudoでどうぞ。
いつもの
CentOS 6.9 minimal installします。
なお、ネットワークアダプタは2つ用意して、1つ目はNATでホストマシン経由でインターネットに出られるように、2つ目はホストオンリーネットワークで、ホストからゲストにアクセスし易いようにしておきます。
2つ目のアダプタのIPアドレスは、インストーラでDHCPで自動起動するようにセットアップしておけば、192.168.56.101(他にVirtualBox上で起動しているゲストがいなければ)になるはずです。
# yum -y update # yum -y groupinstall 'Development tools' # yum -y install wget
Juypyter Notebookは8888ポートを使うようなので個別にあけてもよいのですが、めんどくさいので今回はiptablesをまるっと落とします。
# chkconfig iptables off # chkconfig ip6tables off # service iptables stop # service ip6tables stop
省略するけど、selinuxも止めてます。
pyenvで環境を整える
pyenvインストールに必要なものを先に入れておく
これ全部本当に必要なのか確かめてないし、Development toolsのインストールですでに入っているものもありそう。
# yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git
pyenvを入れる
gitで入れます。
# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
環境設定
# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bash_profile # echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bash_profile # echo 'eval "$(pyenv init -)"' >> .bash_profile # source .bash_profile
確認
# pyenv version system (set by /root/.pyenv/version)
Anacondaのインストール
pyenvでanaconda3が使えることを確認した上で、インストールします。
# pyenv install --list | grep anaconda3
実行時の最新は「anaconda3-5.0.1」だったので、これをインストール。
# pyenv install anaconda3-5.0.1 # pyenv global anaconda3-5.0.1 # pyenv rehash
以下のようになることを確認できればOK。
# pyenv versions system * anaconda3-5.0.1 (set by /root/.pyenv/version) # python --version Python 3.6.3 :: Anaconda, Inc.
anaconda自身のアップデート
yumっぽいもの。pythonだとpipのイメージが強いけど、anacondaとしてcondaというパッケージマネージャがあるようなので、そちらを使ってみます。
# conda update conda # conda --version
機械学習の本「Pythonで動かして学ぶ!新しい機械学習の教科書」で前半流し読みしていて出てきたパッケージがいるか、ザクッと確認。
# conda list jupyter* # conda list numpy* # conda list matplotlib* # conda list tensrflow* # conda list keras*
tensrflowとkerasはいなさそうです。
本の中でもpipインストールするように書いてありました。
あえて本に逆らってcondaで入れてみます。
そもそもcondaで見つかるかyum list available相当の「conda search」で調べて、見つかればinstallする、という流れで。
本にはtensorflowのバージョンが書いてないけど、とりあえず最新(tensorflow 1.4.1とkeras 2.1.3)を入れてみます。
# conda search tensorflow # conda search keras # conda install tensorflow # conda install keras
それぞれが依存しているパッケージも一緒に入れてくれている模様です。
JupyterNotebookにアクセスできる環境を作る
この本にかぎらず、ググってよくヒットする例は、Windowsに直接Anacondaを入れてJupyterを立ち上げ、そのままブラウザも起動してくるパターンですが、今回はそれではないので、追加の設定が必要、とのこと。
ipythonでパスワードハッシュを生成
この後に作るjupyterの設定ファイルに書き込むため、事前にこの作業をしておきます。
# ipython # 暗号化された文字列を生成するためにライブラリ読み込み In [1]: from notebook.auth import passwd # パスワードを入力して暗号化された文字列を生成 In [2]: passwd() Enter password: Verify password: Out[2]: 'sha1:(暗号化された文字列)' # iPythonから抜ける In [3]:exit Do you really want to exit ([y]/n)? y
設定ファイルの作成
mkdir ~/.jupyter touch ~/.jupyter/jupyter_notebook_config.py vi ~/.jupyter/jupyter_notebook_config.py
記述する内容は以下のとおりです。
c = get_config() c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888 c.NotebookApp.password = u'前述のipythonで生成したパスワードハッシュを転記する'
Jupyter Notebookを起動する。
# jupyter notebook --allow-root
ホストとなるWindowsから
http://ゲストマシンに割り当てられたIPアドレス:8888
でアクセスして、ログイン画面が表示されればOK。
JupyterNotebookの停止
サーバー側で「Ctrl+C」
でいいらしいです。