Pythonの開発環境整備 | RaspberryPiでJupyter Notebookサーバ構築

Pythonの開発環境整備 | RaspberryPiでJupyter Notebookサーバ構築

今回はJupyter Notebookサーバを立てる方法を紹介します。

追記:本来は複数人で活用できる環境を構築したいと思っていましたが、それはJupyterHubで実現できるようです。こちらはあくまで、自身のJupyterNotebookをローカルに置かずに、サーバに置く場合に有効です。

今回のサーバ環境

自宅に転がっていた「RaspberryPi4」をサーバに見立てて環境準備しました。

暫くアップデートを掛けていなかったため、アップデートから実施しています。

ラズパイ側にjupyter-notebookを既にインストール済の場合は読み飛ばしていただいて結構です。

1)ラズパイのシステムアップデート

システム自体のアップデートおよびアップグレードを掛けます。

sudo apt-get update
sudo apt-get upgrade

2)pythonのインストール

今回の場合、端末にはpython2.7が入っていた(2系)ので、改めて最新のpython3系をインストールしました。

sudo apt-get install python3.7

3)python.exeの場所を確認する

python.exeの保存場所を調べるには以下のコマンドを実行します。

which python

windowsは「where」でしたが、Linuxは「which」なんですね…

場所は「/usr/bin/pyton」のようです。

次に、このフォルダ内にpython関連のファイルがどれだけあるかを調べます。

ls /usr/bin/ | grep python

すると、フォルダ内に存在するpythonプログラムを調べることができます。

私の端末には 2.7、3.6、3.7が入っていました。

4)pythonプログラムを切り替える

現在のpythonプログラムのバージョンは以下のコマンドで調べることができます。

python -V

私の場合、python 2.7.x と表示され、3系が設定されていないことが分かりました。

pythonプログラムの切り替えには「update-alternatives」を利用します。

設定

以下のようなコマンドを入力します。末尾の数字1~3が優先順位になります。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 3

問題なく設定できたかは以下のコマンドで確認できます。

sudo update-alternatives --config python

改めて「python -V」でバージョンを確認したところ、無事優先順位1(上記の場合ver3.7)に切り替わっていました。

5)Jupyter Notebookのインストール

前置きが長くなりましたが、Jupyter Notebookをインストールします。

pip install jupyter

6)PATHを通す

起動は以下のコマンドでしたが、「jupyterが見つからない(command not found)」とエラーを吐かれます。

jupyter-notebook

Pathが通っていないようなので、Pathを通します。

1:pathを確認

今回は「$HOME/.local/bin」にパスを通します。

このフォルダを見ると、確かにこの中に「jupyter-notebook.py」が存在します。

※ 「$HOME」は「/home/user名」が格納された環境変数のこと

2:pathを通す

PATHを通すためには「export」を使います。

export PATH="$PATH:$HOME/.local/bin"

※ 「$PATH:」は既存のPATHに追記する。(:区切り)

3:pathを確認する

環境変数の一覧は以下のコマンドで確認できます。

printenv ←すべてのパスを一覧表示
printenv PATH ←$PATHのみ表示

4:改めてjupyter-notebookを起動

「jupyter-notebook」と入力し、コマンドが通れば成功です。

jupyter-notebookの設定

jupyter-notebookを起動すると、デフォルトは「localhost:8888」になるようです。

今回はサーバ化するため、設定を変えたいと思います。

1)設定ファイルの作成

jupyter notebook --generate-config

$HOME/.jupyter/jupyter_notebook_config.py に設定ファイルが生成されます。

2回実行すると「Overwrite(上書き)」するか聞かれる。

2)上記pythonファイルを編集

今回はvimで編集を掛けます。

vim $HOME/.jupyter/jupyter_notebook_config.py

この344行目の「localhost」を変更させます。

↓変更前

## ノートブックサーバが待ち受ける IPアドレス、
# Default: 'localhost'
# c.NotebookApp.ip = 'localhost'

↓変更後(192.168.xx.xの「x」は端末のIPアドレス)

## ノートブックサーバが待ち受ける IPアドレス、
# Default: 'localhost'
c.NotebookApp.ip = '192.168.xx.x'

※「#:コメントアウト」は外すこと

※ ipアドレスを決め打ちにしない場合は「*」や「0.0.0.0」でも一応OK

3)接続確認

ラズパイ側でnotebookサーバを起動したのち、クライアント側でアクセスする。

パスワードやトークンが聞かれる画面が出れば成功

パスワード設定

パスワードを設定するには以下のコマンドを入力します。

jupyter-notebook password

すると、Enter password: が要求されるので、任意のパスワードを入力します。

Verify password: でもう一度パスワードを入力します。

すると画面が以下のように切り替わり、パスワードを入力することでログインできるようになります。

初期起動時の設定

以下はこまごまとした設定です。

・サーバ起動時に、サーバ側のブラウザが立ち上がらないように設定する(452行目)

 → open_browser = False に設定する

## Whether to open in a browser after starting. The specific browser used is
#  platform dependent and determined by the python standard library `webbrowser`
#  module, unless it is overridden using the --browser (NotebookApp.browser)
#  configuration option.

#  Default: True
c.NotebookApp.open_browser = False

ユーザを管理するには?

JupyterHubを準備することで、ユーザを管理することができます。

<<現在記事作成中>>

ではまた!