ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Python 3.9.xからHomebrew版Python 3.11に置き換えたらJupyter Labが動かない!?

今までAppleのDeveloper Toolsをインストールしたときに入るPython 3.9を使っていたのですが、昨日brew upgradeしたあとインストールしてたモジュールが動かないのでなんでかなと思ったら、python3バイナリが3.9.xじゃなくて3.11.xに置き換わっていました。

折角の機会だし、Python 3.10よりも高速化されてエラーがよりわかりやすくなったらしいですしPython 3.11を使ってみるかと思って、普段使っているPythonモジュールをpipでインストールしてみました。Python 3.9の方はもう使わないと思うので、モジュールは削除済みです。

% python3.11 -m pip install ~/requirements.txt

そして、次のような感じでJupyter Labを起動しようとしたのですが...

% nohup jupyter lab --notebook-dir ~/working/notebook &

次のようなエラーがブラウザーに表示されました。

JupyterLab Error

JupyterLab application assets not found in "/opt/homebrew/Cellar/python@3.11/3.11.2/Frameworks/Python.framework/Versions/3.11/share/jupyter/lab"
Please run `jupyter lab build` or use a different app directory

起動ログにも同じ内容が書かれています。

[I 2023-02-18 16:44:39.880 LabApp] JupyterLab application directory is /opt/homebrew/Cellar/python@3.11/3.11.2/Frameworks/Python.framework/Versions/3.11/share/jupyter/lab
[E 2023-02-18 16:44:39.880 LabApp] JupyterLab application assets not found in "/opt/homebrew/Cellar/python@3.11/3.11.2/Frameworks/Python.framework/Versions/3.11/share/jupyter/lab"
[E 2023-02-18 16:44:39.880 LabApp] Please run `jupyter lab build` or use a different app directory

AppleのDeveloper Tools提供のPython 3と各種パスが色々と違うので、そこらへんが原因なんでしょうね。

素直にjupyter lab buildを実行すると色々出てきて、かえって混乱しますね。しまいには、Node.jsとnpmをインストールしてくれって言われます。別に今はNode.jsを使うつもりはないんですけど。

% jupyter lab build
[LabBuildApp] JupyterLab 3.6.1
[LabBuildApp] Building in /opt/homebrew/Cellar/python@3.11/3.11.2/Frameworks/Python.framework/Versions/3.11/share/jupyter/lab
Build failed.
Troubleshooting: If the build failed due to an out-of-memory error, you
may be able to fix it by disabling the `dev_build` and/or `minimize` options.

If you are building via the `jupyter lab build` command, you can disable
these options like so:

jupyter lab build --dev-build=False --minimize=False

You can also disable these options for all JupyterLab builds by adding these
lines to a Jupyter config file named `jupyter_config.py`:

c.LabBuildApp.minimize = False
c.LabBuildApp.dev_build = False

If you don't already have a `jupyter_config.py` file, you can create one by
adding a blank file of that name to any of the Jupyter config directories.
The config directories can be listed by running:

jupyter --paths

Explanation:

- `dev-build`: This option controls whether a `dev` or a more streamlined
`production` build is used. This option will default to `False` (i.e., the
`production` build) for most users. However, if you have any labextensions
installed from local files, this option will instead default to `True`.
Explicitly setting `dev-build` to `False` will ensure that the `production`
build is used in all circumstances.

- `minimize`: This option controls whether your JS bundle is minified
during the Webpack build, which helps to improve JupyterLab's overall
performance. However, the minifier plugin used by Webpack is very memory
intensive, so turning it off may help the build finish successfully in
low-memory environments.

An error occurred.
ValueError: Please install Node.js and npm before continuing installation. You may be able to install Node.js from your package manager, from conda, or directly from the Node.js website (https://nodejs.org).
See the log file for details:  /var/folders/mq/961qzxqx47931tnnpblf6wfr0000gn/T/jupyterlab-debug-rkpmmygw.log

こちらを見つけました。Pythonのバージョンは異なりますが、Homebrew版のPython 3を使っているという点では一緒です。 やはり困ったときのStackoverflowですね。

stackoverflow.com

つまり、--app-dirでアセットのパスを指定すれば良いということですね。これできちんとJupyter Labの画面が開きました。

% nohup jupyter lab --app-dir /opt/homebrew/share/jupyter/lab --notebook-dir ~/working/notebook &

ところで、その前に見つけたこの質問者は解決できたんだろうか。

detail.chiebukuro.yahoo.co.jp

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。