ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

【Python】Jupyter Notebookのインストールと環境構築

Stable Diffusionを使うようになって、Google ColabやSageMakerを利用してノートブックでプログラム作成をすることが多くなってきた。

少し前にディープラーニング開発をやっていた頃は、ローカルPC上でJupyter Notebookを使ってプログラムを作ることはよくやっていたが、しばらくこういうことはやっていなかった。

Stable Diffusionを利用した画像生成や再開するディープラーニング機械学習開発でも使うことが多くなってくるので、改めてGPU搭載PCにJupyter Notebookをインストールしてローカルなノートブック開発環境構築した。

jupyter.org

自分の備忘録も兼ねて、Jupyter Notebookのインストールと環境構築の方法を記事に書いておくことにする。

Jupyter Notebookには、初期の頃からのノートブック単独版と(IDE的拡張が追加されている)JupyterLab版の2つの種類がある。「Jupyter Notebook」で検索するとこの両方の情報が混在ヒットして、記載されているインストール手順が違っていたりする。この辺の事情が分かっていない人は混乱するんじゃないだろう。

本記事では、ノートブック単独版をJupyter Notebook、JupyterLab版をそのままJupyterLabと呼んで、この2つのインストール方法を分けて記載する。

Jupyter Notebookのインストール

Jupyter Notebookのインストール方法として、システム側に入れるのと、言語ツール環境に入れるのの2つの方法がある。後者の場合は、さらにグローバル環境または仮想環境に入れるのの2つの方法がある。

Jupyter Notebookをシステム側に入れる

$ sudo apt install python3-pip
$ pip3 install jupyter notebook
% brew install jupyter

Jupyter Notebookを言語ツールのグローバル環境に入れる

pyenvを使っている場合

$ pyenv install 3.10.12
$ cd
$ pyenv global 3.10.12
$ python --version
Python 3.10.12
$ pip install jupyter notebook

asdfを使っている場合

$ asdf install python 3.10.12
$ cd
$ asdf global python 3.10.12
$ python --version
Python 3.10.12
$ pip install jupyter notebook

Jupyter Notebookを言語ツールの仮想環境に入れる

pyenvを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ pyenv local 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10
$ pipenv install jupyter notebook

asdfを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ asdf local python 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10
$ pipenv install jupyter notebook

JupyterLabのインストール

JupyterLabもインストール方法として、システム側、言語ツールのグローバル環境、言語ツールの仮想環境に入れるのの3つの方法がある。

JupyterLabをシステム側に入れる

$ sudo apt install python3-pip
$ pip3 install jupyterlab
% brew install jupyterlab

JupyterLabを言語ツールのグローバル環境に入れる

pyenvを使っている場合

$ pyenv install 3.10.12
$ cd
$ pyenv global 3.10.12
$ python --version
Python 3.10.12
$ pip install jupyterlab

asdfを使っている場合

$ asdf install python 3.10.12
$ cd
$ asdf global python 3.10.12
$ python --version
Python 3.10.12
$ pip install jupyterlab

JupyterLabを言語ツールの仮想環境に入れる

pyenvを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ pyenv local 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10
$ pipenv install jupyterlab

asdfを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ asdf local python 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10
$ pipenv install jupyterlab

Jupyter Notebook/JupyterLabの起動実行

Jupyter Notebook

Jupyter Notebookをシステム側、言語ツールのグローバル環境に入れた場合

$ jupyter notebook
....    ....
....    ....

    To access the server, open this file in a browser:
        file:///home/USERNAME/.local/share/jupyter/runtime/jpserver-xxxxx-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/tree?token=9c18d70a......
        http://127.0.0.1:8888/tree?token=9c18d70a......
....    ....
....    ....

Jupyter Notebook起動後のノートブック作成手順はJupyterLabと同じなので、下記のJupyterLabの記載を参照のこと。

Jupyter Notebookを言語ツールの仮想環境に入れた場合

$ cd PROJECT_DIR
$ pipenv run jupyter notebook

JupyterLab

JupyterLabをシステム側、言語ツールのグローバル環境に入れた場合、

$ jupyter lab
....    ....
....    ....

    To access the server, open this file in a browser:
        file:///home/USERNAME/.local/share/jupyter/runtime/jpserver-xxxxx-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/tree?token=f37955ad......
        http://127.0.0.1:8888/tree?token=f37955ad......
....    ....
....    ....

ブラウザからURLlocalhost:8888にアクセスすると、JupyterLabのログイン画面が表示される。

上のJupyterLabの起動時に表示されたトークンの値を[Password or token:]に入力して[ Log in ]を押すと、下のような画面に変わる。

ファイル一覧からいずれかのディレクトリを開いた状態で、メニュー[File] > [New] > [Notebook]を選ぶと、そのディレクトリの中にノートブックが作成され、使用するカーネルの選択を聞かれるので、いずれかのカーネルを選択すれば、新しいノートブックが表示される。

JupyterLabを言語ツールの仮想環境に入れた場合

$ cd PROJECT_DIR
$ pipenv run jupyter lab

Jupyter Notebook/JupyterLabの設定

インストール後のデフォルト状態では、Jupyter Notebook/JupyterLabはトークンによるログイン、ポート番号8888になっているが、セキュリティ的見地からこれらの設定は変更しても良いだろう。

以下の操作によって、これらの設定を変更できる

Jupyter Notebook

$ jupyter notebook --generate-config
Writing default config to: /home/USERNAME/.jupyter/jupyter_notebook_config.py
# Jupyter Notebookのパスワードを設定
$ jupyter notebook password
Enter password:     # パスワードを入力
Verify password:    # パスワードを再入力
[JupyterPasswordApp] Wrote hashed password to /home/USERNAME/.jupyter/jupyter_server_config.json

# Jupyter Notebookサーバーのポート番号を変更
$ vi ~/.jupyter/jupyter_notebook_config.py 
- # c.ServerApp.port = 0
+ c.ServerApp.port = 5555

JupyterLab

$ jupyter lab -–generate-config
Writing default config to: /home/USERNAME/.jupyter/jupyter_lab_config.py
# JupyterLabのパスワードを設定
$ jupyter lab password
Enter password:     # パスワードを入力
Verify password:    # パスワードを再入力
[JupyterPasswordApp] Wrote hashed password to /home/USERNAME/.jupyter/jupyter_server_config.json

# JupyterLabサーバーのポート番号を変更
$ vi ~/.jupyter/jupyter_lab_config.py 
-# c.ServerApp.port = 0
+c.ServerApp.port = 5555

VSCode用Jupyter Notebook環境の構築

ブラウザからJupyter Notebookを使うのも悪くはないが、プログラム開発にVisual Studio Codeを常用している身としては、VSCodeでノートブック・プログラミングをやりたくなってくる。

VSCode拡張機能 "Jupyter" をインストールすると、VSCode上でもノートブックが利用できるようになる。

VSCodeではプロジェクト・ディレクトリ単位でのプログラム作成・編集になるので、Jupyter Notebookを言語ツールの仮想環境に入れる場合についてだけ説明しておく。仮想環境によってプロジェクト毎にノートブックで使用するPythonのバージョンを変えられるので、これがもっとも合理的な使い方ではないだろうか。

Jupyter Notebook用仮想環境を作成する

pyenvを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ pyenv local 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10

asdfを使っている場合

$ mkdir PROJECT_DIR
$ cd PROJECT_DIR
$ asdf local python 3.10.12
$ python --version
Python 3.10.12
$ pipenv --python 3.10

VSCode用Jupyter Notebookカーネル環境を作成する

$ pipenv shell
$ pip install ipykernel
$ ipython kernel install --user --name=pipenv_3.10.12
$ exit

オプション--nameに指定するのはJupyter Notebookカーネルの名前だが、これは任意で良い。

VSCode側のJupyter Notebookカーネルの設定

VSCode拡張機能Jupyterをインストールする。

上記で作成した仮想環境のディレクリトをVSCodeから開く。

拡張子 .ipynb のファイルを作成すると、ノートブックとして認識され、Jupyter Notebookのカーネルを選べるようになる。

右上の[Select kernel]を押すと、[Jupyter Kernel...]というメニューが表示されるので、これを選ぶと上で作成したカーネルの名前が出てくる。

当該カーネルを選ぶと、それがノートブックで使用されるカーネルとして設定される。

小生は、ローカルPCでJupyter Notebookを利用するときはこのVSCodeを使う方法を常用している。ノートブック作成に使うのはほとんどこちらの方だけだ。JupyterLab固有の機能を使うときだけそちらを利用している

【追記】〔2023-12-22〕

上で利用しているipykernelライブラリによるJupyter Notebookカーネルの簡単な扱い方を備忘録として書いておく。

ipython kernel install --user --name=KERNEL_NAME
jupyter kernelspec uninstall KERNEL_NAME
jupyter kernelspec list

【参照リンク】

www.geekfeed.co.jp

zenn.dev