概要
Matlantis 環境で nglview が動作せず、以下の画面が表示される現象が報告されています。この原因の一つに Python パッケージ (nglview) と Jupyter Lab 拡張機能 (nglview-js-widgets) のバージョンの不一致があります。
動作しない場合に表示される画面:
↓ click した後に表示されるエラー例
解決策
解決策1: 手動インストールしたnglview をアンインストールする
特に nglview のバージョンについてこだわりがない場合、すべての環境で手動インストールした nglview を削除し、Matlantisが提供するデフォルトの nglview をご利用いただくことが最良の解決策となります。
-
すべてのカーネル(py39, py,311, py313など)でNotebookを立ち上げ
nglviewをアンインストールします。!pip uninstall nglview(※
py313,py311,py39や、自身で作成したvenv環境など、すべてのカーネルで実行してください) -
いずれかのカーネルでNotebookを一つ立ち上げ、関連する
labextensionsを削除します。!rm -rf ~/.py39/share/jupyter/labextensions/nglview-js-widgets !rm -rf ~/.py311/share/jupyter/labextensions/nglview-js-widgets !rm -rf ~/.py313/share/jupyter/labextensions/nglview-js-widgets
(※ その他、venvなどで作成した環境があれば、同様に削除)
- Matlantis の画面を更新します。(修正されなかった場合はMatlantisを再起動)
デフォルトのnglviewが利用されるようになり、エラーが解消されます。
解決策2: すべてのカーネルでnglviewのバージョンを統一する
手動で特定のバージョンの nglview をインストールする必要がある場合は、使用するすべてのカーネル(py313, py311, py39, venv環境など)において、全く同じバージョン の nglview をインストールしてください。
!pip install -U nglview==4.0.0
背景:発生メカニズム
1. パッケージ管理の分離
nglview は、Pythonライブラリ本体(site-packages にインストール)と、Jupyter Lab で表示するための JavaScript 拡張機能(labextensions/nglview-js-widgets、以下 widgets)の2つで構成されています。これらは別々に管理されます。
2. Matlantis環境の site-packages
Matlantis 環境には、site-packages が2種類存在します。
-
共通パッケージ (①): 全ユーザー共通。
/usr/local/pyenv/versions/3.13.8/envs/python313/lib/python3.13/site-packages/- デフォルトで
nglview v4.0.0がインストールされています。
-
ユーザーパッケージ (②): ユーザーが個別にインストール。
/home/jovyan/.py313/lib/python3.13/site-packages/
手動で nglview をインストール(例: 旧 pfcc_extras 経由など)した場合、②に指定したバージョンが保存され、共通の①より優先されます。
3. widgets のバージョン依存性
widgets は nglview 本体とのバージョン依存性が非常に強く、バージョンが一致していないと正しく動作しません。
Jupyter Lab は起動時に 1種類 の widgets しか読み込めません(通常、py313 など優先度の高いカーネルのものが選ばれます)。
4. バグの発生
これらの仕様により、異なるカーネルで異なるバージョンの nglview が使用されている 場合に問題が発生します。
例えば、py313 カーネルでは手動インストールした nglview (②) を参照し、py311 カーネルではデフォルトの nglview (①) を参照しているとします。Jupyter Lab が py313 の widgets を読み込んだ場合、py311 カーネルで実行した際に nglview 本体と widgets のバージョンが不整合となり、エラーが発生します。
※問題が解決しない場合はこちらの記事を参考にPython環境のリセットを実施してください。