なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

Python3.6 & Jupyter Notebook環境をCentOS 6.9 on Virtualboxの上に作ってみた。

そろそろかじっておいたほうがいいかなと

関連書籍をあさっていると、お手軽に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」
でいいらしいです。


最後に

本業がDB屋さんってこともあって、PythonもJupyterも、まだ全然わかってないです。ふんいきでやってます。

盛り上がってる技術界隈は、書籍次々に新しいものが出てきていいですね。
翔泳社さんが電子書籍半額セールやってたので、軽く飛びついてみました。