Edited at

Oracle Cloud Infrastructure 環境で Jupyter NotebookとTensorFlowをインストール


はじめに

環境が必要になりインストールしたので、備忘録です。

Python仮想環境には、pyenv + pipenv を利用しました。


環境


  • Oracle Cloud Infrastructure 環境の Compute インスタンス


    • Compartmentを作成(任意。デフォルトでは最上位のrootコンパートメント)

    • VCNを作成

    • Computeインスタンスを作成(今回は CentOS 7 イメージを利用)

    • Public IPアドレスを確認しておく



※Jupyter Notebookへのアクセスは手元のPCからインターネット経由で行いたいので、Notebookを起動するPORT:8888 にアクセスできるよう、ComputeインスタンスのFirewall設定と、VCNのセキュリティ設定を行う。下記を参考に、PORTを8888に読み替えて実行する。(リンク先では、PORT:5601と9200の2つを設定している)

このクラウド環境固有の設定変更


インストール


pyenv + pipenv 環境を準備

Pythonでの仮想環境は、今回はpyenv + pipenvで行うことにする。

pipenvを使用する場合、特定のディレクトリ(今回は $HOME/mypj とした)に移動し、pipenv shell で、仮想環境に入れる。抜けるのはexit。以下はその実行イメージ。

[fn@yuzu ~]$ cd mypj/

[fn@yuzu mypj]$ pipenv shell
Launching subshell in virtual environment...
. /home/fn/.local/share/virtualenvs/mypj-CamC0rlR/bin/activate
[fn@yuzu mypj]$ . /home/fn/.local/share/virtualenvs/mypj-CamC0rlR/bin/activate
(mypj) [fn@yuzu mypj]$ python
Python 3.6.8 (default, Mar 12 2019, 06:34:05)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> (略)
>>> exit()
(mypj) [fn@yuzu mypj]$ exit
exit
[fn@yuzu mypj]$


実行したコマンド一覧

こちらのページを参考に実施。詳しい内容はぜひリンク先を参照ください。pyenv + pipenv を何故選んだかもリンク先の記述を参考にしました。

[Python] pyenv と pipenv による python 仮想環境を構築する(CentOS 7 ほぼ初期状態から )

※TensorFlowが現時点でPython3.6までの対応なので、今回は3.6.8をインストール。

参考にしたページのほぼコピペなので大変申し訳無いのですが、備忘録としてコマンドのみ列挙。

$ curl https://bootstrap.pypa.io/get-pip.py | sudo python

$ sudo yum install git

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL" -l

$ pyenv --version
pyenv 1.2.9-19-g7d02b24

$ pyenv install --list
(3.6.8 があることを確認した)
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

$ sudo pip install pipenv

$ pipenv --version
pipenv, version 2018.11.26

★ 仮想環境(mypjディレクトリを使用する)に、python 3.6.8をインストール ★
$ mkdir mypj
$ cd mypj
$ pipenv --python 3.6.8


必要なパッケージをインストール

tensorflowとjupyterとipython、あとは必須ではないが、使いそうなものをとりあえずインストール。

pipenvコマンドで行う。

$ cd ~/mypj

$ pipenv install oci-cli
$ pipenv install tensorflow
$ pipenv install jupyter
$ pipenv install matplotlib scikit-learn spyder pandas ipython

インストール後、主要なパッケージのバージョンを表示した。

[fn@yuzu mypj]$ pipenv shell

(mypj) [fn@yuzu mypj]$ pip list | grep jupyter
jupyter 1.0.0
jupyter-client 5.2.4
jupyter-console 6.0.0
jupyter-core 4.4.0
(mypj) [fn@yuzu mypj]$ pip list | grep tensorflow
tensorflow 1.13.1
tensorflow-estimator 1.13.0
(mypj) [fn@yuzu mypj]$


Jupyter Notebookの設定

以降全て、pipenv shell で、仮想環境に入った状態で実施している。

[fn@yuzu ~]$ cd ~/mypj/

[fn@yuzu mypj]$ pipenv shell
(mypj) [fn@yuzu mypj]$


設定ファイルの作成

$ jupyter-notebook --generate-config

Writing default config to: /home/fn/.jupyter/jupyter_notebook_config.py
$


アクセス時のパスワードを設定

以下を実行。指定したパスワードに対し返してくれる sha1:で始まるhash文字列を、後で使用する。

$ ipython3

Python 3.6.8 (default, Mar 12 2019, 06:34:05)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from notebook.auth import passwd

In [2]: passwd()
Enter password: ★ここでパスワードを入力★
Verify password:
Out[2]: 'sha1:bf3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' <-- 後で使用する
In [3]: exit
$


設定ファイルを編集

以下の5行を --generate-config で作成したファイルに追記する。最終行のところは、上で調べたhash文字列。

$ vi ~/.jupyter/jupyter_notebook_config.py

(以下を追記)
c.IPKernelApp.pylab = 'inline'
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'sha1:bf3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'


Jupyter Notebookを起動

$ jupyter-notebook &

[1] 2293
$ [I 12:22:06.152 NotebookApp] Writing notebook server cookie secret to /home/fn/.local/share/jupyter/runtime/notebook_cookie_secret
[I 12:22:06.387 NotebookApp] Serving notebooks from local directory: /home/fn/mypj
[I 12:22:06.387 NotebookApp] The Jupyter Notebook is running at:
[I 12:22:06.387 NotebookApp] http://(yuzu or 127.0.0.1):8888/
[I 12:22:06.387 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).


アクセスして動作確認

ブラウザから http://<Public IP アドレス>:8888/

指定したパスワードを入力し、Log in.

※PORT:8888にアクセスできる環境で実行する(例えば、VPN経由だと許可されていない場合がある)

image.png

New -> Python3 で新規Notebookを起動して以下を実行し、TensorFlowがimportできることを確認。

image.png


参考

https://github.com/pypa/pipenv

https://pipenv.readthedocs.io/en/latest/