Pythonの開発環境整備 | RaspberryPiでJupyter Notebookサーバ構築
- 2022.09.18
- Python
今回は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を準備することで、ユーザを管理することができます。
<<現在記事作成中>>
ではまた!
-
前の記事
Pythonライブラリ | OpenCVでカメラから画像/動画を取得する 2022.09.17
-
次の記事
Python | OpenCVでQRコードリーダーを作成する 2022.09.22