Jupyter LabをM1以降のMacにインストールし、pip+venv仮想環境を使用する方法

Jupyter LabをM1以降のMacにインストールし、pip+venv仮想環境を使用する方法
スポンサーリンク

みなさんこんにちは、大学生のひじきです。今回はM1以降のMacへJupyter Labを導入する方法について解説して行きます。

状況としては普段pip+venvで仮想環境を分けている方向けに、

  • グローバルのpipにJupyter Labを入れる(仮想環境ごとには入れない)
  • Jupyter Labを開いた後に、ディレクトリごとに作成している仮想環境を有効化する

上記を解説します。

Jupyter Labの導入方法は既に様々な記事で解説されていますが、ディレクトリごとにJupyter Labを入れる方法やAnacondaで入れる方法などが多く、上記のような状況にピッタリと来る方法がありませんでした。そこで備忘録としてこの記事を書いています。

とりあえず結論としては、普通に仮想環境を作成した後に「ipykernelコマンドを使って仮想環境からJupyter Labのカーネルを作成する」となります。こちらに関して、この後詳しく解説します。

なお、僕の環境は以下の通りです

  • M1 Mac使用
  • Python自体はpyenvを用いて管理
  • ディレクトリごとにvenvで仮想環境を作成
  • Anacondaは未使用
スポンサーリンク

前提:Node.jsのインストール

まずこれです。「Pythonを実行したいのに?」と思われるかもしれませんが、Jupyter Labの使用にはNode.jsのインストールが必要となります。

単純にHomebrewで入れる方法は以下ですが、nやnvm、nodenvといったバージョン管理ツールを使った方が後々良いかと思われます。pyenvを使うような感じですね。

$ brew install node

ちなみに僕はnodenvを使用していますが、最もよく使われているのはnvmのようです。他にも様々なバージョン管理ツールがあるようなので、ここはご自身で調べてみてください!

なお、インストールするバージョンはLTSのうちの最新版が良さそうです。少し古いものだと後述の警告メッセージが出る可能性があります。

一応インストールできているかの確認と、バージョンがLTSになっているかの確認を行なっておきましょう

$ node -v
v20.17.0

Jupyter Labをグローバルのpipでインストール

さて、Node.jsを入れることができたら、いよいよJupyter Labを導入します。こちらはシンプルに以下です。

$ pip install jupyterlab

この状態で

$ jupyter lab

コマンドを実行すると自動的にHTMLファイルが生成され、Jupyter Labの画面が開きます。

この時、HTMLファイルを開くアプリをSafariやChrome等のブラウザにしている必要があります。
僕はここをVSCodeにしていたため、「なんで自動で開かないんだろう…」となりました……。

Jupyter Lab画面が開けたら、サイドバーからディレクトリの移動、Launcherタブからノートブックやファイルの作成を行うことができます。

細かい操作についてはここでは触れませんが、重要なのが「Notebook」のところに表示されているリストです。ここにあるのはカーネルというもので、ノートブックを作成、実行する際には必ずカーネルを指定します。

Jupyter LabのLauncher画面

ここでカーネルと仮想環境の対応についてですが、デフォルトのカーネルを選択した場合にはグローバルのpipで入れたライブラリしか使用できません。

つまり、各ディレクトリの仮想環境に対応したカーネルを作成する必要があります。

その方法についてここから解説していきます。

仮想環境からカーネル(kernel)を作成

仮想環境と対応するカーネルを作成するため、まずは作業ディレクトリに移動し、仮想環境を有効化します。例えば作業ディレクトリの直下に.venv/がある状況では以下ですね。

$ source .venv/bin/activate

こうして仮想環境を有効化させた状態で、まずipykernelライブラリをpipで入れます。結局これはディレクトリごとに入れる必要あるんかい、という話ですが。VSCode上で.ipynbファイルを実行する際にも必要だったので、これはしょうがない……。

$ pip install ipykernel

続いてこのipykernelを使って、現在有効化している仮想環境と、Jupyter Lab上で選択するカーネルを結びつけて行きます。

$ python -m ipykernel install --user --name {MACHINE_NAME} --display-name "{DISPLAY_NAME}"

はい、これだけです。

  • MACHINE_NAME
    • その名の通り表には出てきません。ASCII文字、数字、ダッシュ、アンダーバー、ピリオドを使用できます。
  • DISPLAY_NAME
    • ここで設定した名前がJupyter Labのカーネル名となります。

この名前にはディレクトリ名(プロジェクト名)を使用するのが分かりやすいかなと思います。例えばml_practiceというディレクトリ名であれば以下などですね。

$ python -m ipykernel install --user --name ml_practice_venv --display-name "ML Practice"

以上でカーネルの作成は完了です!

補足として、作成したカーネルを表示、削除するコマンドは以下となります

$ jupyter kernelspec list
$ jupyter kernelspec uninstall {MACHINE_NAME}

正常に動作していれば、Jupyter Labを開いた時にLauncherタブなどからカーネルを選択することができるはずです!

Jupyter LabのLauncher画面

なお、ライブラリを追加したい時はコマンドから仮想環境を有効化した上でインストールします。ノートブックからpip installを実行してしまうとグローバルの環境にインストールされてしまうので注意です!

またコマンドによって追加したライブラリはJupyter Lab上に即反映されるので、この点は非常に便利です。

ここまでで手順は完了となります。最後にカーネル作成用のコマンドを参照したサイトと、いくつか生じた警告・エラーについてまとめてあります。

参考サイト

Posit Workbench User Guide - Managing Jupyter Kernels in JupyterLab

Jupyter Labが起動しない時の解決法

最後に僕が出会ったエラーとその対処法をまとめておきます。

  • Node.jsが入っているのにエラー
    • LTSバージョンのうち最新のものを入れる
  • なぜかブラウザではなくVSCodeが開く
    • HTMLファイルを開くデフォルトアプリをSafariやChromeに変更
  • No module named ‘requests’エラー
    • 素直にrequestsを入れる
  • 起動するが「404 GET /apple-touch-icon.png」という警告がターミナルのログに表示

以上になります、ありがとうございました!

タイトルとURLをコピーしました