K3D-jupyter icon indicating copy to clipboard operation
K3D-jupyter copied to clipboard

K3D fails in JupyterLab with jupyterlab_widgets=3?

Open jatentaki opened this issue 2 years ago • 3 comments

  • K3D version: 3.14
  • Python version: 3.8
  • Operating System: Linux/MacOS (reproduced on both)

Description

There is an issue with K3D alongside the latest versions of jupyterlab. Running with jupyterlab_widgets=3.* (default, currently latest) causes JS crashes, whereas manually setting to 1.1 works. The crash manifests itself first in the console

jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2 Plugin 'jupyter.extensions.k3d' failed to activate.
(anonymous) @ jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2

and then in a JS error in the notebook image Clicking opens this: image

What I Did

To reproduce, I create an empty env with conda create -n k3d-test python=3.8 numpy, activate it and then

  1. For the failing version, execute pip install jupyterlab k3d
  2. For the working version, execute pip install jupyterlab k3d jupyterlab-widgets==1.1

Web console log / python logs

Text content of the error show in notebook:

[Open Browser Console for more detailed log - Double click to close this message]
Failed to load model class 'PlotModel' from module 'k3d'
loadClass@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.083e6b37f2f7b2f04b5e.js?v=083e6b37f2f7b2f04b5e:1:74855
loadModelClass@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.467514c324d2bcc23502.js?v=467514c324d2bcc23502:1:10721
_make_model@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.467514c324d2bcc23502.js?v=467514c324d2bcc23502:1:7517
new_model@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.467514c324d2bcc23502.js?v=467514c324d2bcc23502:1:5137
handle_comm_open@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.467514c324d2bcc23502.js?v=467514c324d2bcc23502:1:3894
134/v/this._handleCommOpen@http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.083e6b37f2f7b2f04b5e.js?v=083e6b37f2f7b2f04b5e:1:73392
_handleCommOpen@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:994422
async*_handleMessage@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:996423
async*19883/b/this._onWSMessage/this._msgChain<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:984339
promise callback*19883/b/this._onWSMessage@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:984324
EventHandlerNonNull*19883/b/this._createSocket@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:983870
b@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:985694
connectTo@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1004939
57847/d/this._connectToKernel@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1029974
setupKernel@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1027416
a@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1025256
connectTo@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1030739
_initialize@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:105591
async*initialize@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:105251
17454/_populate/<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:478398
promise callback*_populate@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:478095
17454/_revert/<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:480420
promise callback*_revert@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:480000
initialize@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:474758
async*69993/_createOrOpenDocument/d<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:462540
promise callback*_createOrOpenDocument@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:462528
open@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:460596
openOrReveal@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:460749
87144/H/execute/<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:442835
promise callback*execute@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:442823
45159/e.prototype.execute@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1353918
51156/restore/l<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1152443
restore@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1152341
async*restore@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:84019
restore@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:21511
Q@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:781873
80885/e.prototype.activatePlugin/n.promise<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1347126
promise callback*80885/e.prototype.activatePlugin@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1347090
80885/e.prototype.resolveRequiredService@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1347519
80885/e.prototype.activatePlugin/r<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1346946
80885/e.prototype.activatePlugin@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1346920
80885/e.prototype.resolveRequiredService@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1347519
80885/e.prototype.activatePlugin/r<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1346946
80885/e.prototype.activatePlugin@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1346920
80885/e.prototype.start/o<@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1348112
80885/e.prototype.start@http://localhost:8888/static/lab/jlab_core.9193dfb13484acaca919.js?v=9193dfb13484acaca919:2:1348086
G@http://localhost:8888/static/lab/7796.80e6d936dca84c219c9e.js?v=80e6d936dca84c219c9e:1:8377
async*e@http://localhost:8888/static/lab/main.357caa106b0f0fb27cf2.js?v=357caa106b0f0fb27cf2:1:1074
async*37559@http://localhost:8888/static/lab/main.357caa106b0f0fb27cf2.js?v=357caa106b0f0fb27cf2:1:1101
a@http://localhost:8888/static/lab/main.357caa106b0f0fb27cf2.js?v=357caa106b0f0fb27cf2:1:11188
@http://localhost:8888/static/lab/main.357caa106b0f0fb27cf2.js?v=357caa106b0f0fb27cf2:1:68844
@http://localhost:8888/static/lab/main.357caa106b0f0fb27cf2.js?v=357caa106b0f0fb27cf2:1:68853

jatentaki avatar Aug 25 '22 08:08 jatentaki

Chiming in,

Also worked for me without reinstalling jupyterlab, but solely downgrading jupyterlab-widgets and ipywidgets.

pip uninstall jupyterlab-widgets ipywidgets
pip install ipywidgets==7.7.1 jupyterlab-widgets==1.1

flacle avatar Sep 04 '22 05:09 flacle

The examples on mybinderhub also seem broken. Dev console errors start with failing to load

https://hub.gke2.mybinder.org/user/k3d-tools-k3d-jupyter-etmiy3v5/static/k3d.js?v=20220907115548

renefritze avatar Sep 07 '22 12:09 renefritze

Pinning ipywidgets==7.7.1 jupyterlab-widgets==1.1 also worked for me

tennysontbardwell avatar Sep 18 '22 16:09 tennysontbardwell

I've got a similar problem:

[Open Browser Console for more detailed log - Double click to close this message] Model class 'PlotModel' from module 'k3d' is loaded but can not be instantiated

Pinning ipywidgets==7.7.1 and jupyterlab_widgets==1.1.0 did not work for me.

RonaldEnsing avatar Nov 01 '22 15:11 RonaldEnsing

Please try 2.15.0 (https://pypi.org/project/k3d/ for conda-forge we need to wait a little bit). @renefritze contribution should solve that

artur-trzesiok avatar Dec 16 '22 15:12 artur-trzesiok

@artur-trzesiok I've tried 2.15.2 and the hello world plot from the user guide as well as other examples (nbody) still fail with jupyterlab with errors like #384 .

Is 2.15.x supposed to work with jupyterlab?

gonzalobg avatar Feb 04 '23 21:02 gonzalobg

Yes it is

artur-trzesiok avatar Feb 28 '23 12:02 artur-trzesiok

Aha.... this has answered a wee problem I was trying to solve - except I'm actually still running the classic UI.

My current versions, prepping for the 23/24 setup, are

jupyterlab 3.4.8
jupyterlab_widgets 3.0.7
k3d 2.15.2
notebook 6.4.12

The library is fine if I switch to the lab UI, but gives me the error in classic

If I compare this to my 22/23 setup - which has

jupyterlab 3.3.4
jupyterlab_widgets 1.1.1
k3d 2.13.1
notebook 6.4.11

.... jupyterlab_widgets is the big change

perllaghu avatar Apr 25 '23 13:04 perllaghu

I believe that this issue is very old and jupyter changed a api so probably it is no longer valid.

artur-trzesiok avatar Jan 06 '24 13:01 artur-trzesiok

I had the same issue: Failed to load model class 'PlotModel' from module 'k3d'

Updating ipywidgets and jupyterlab_widgets to the versions below solved the issue for me: pip install jupyterlab-widgets==3.0.9 ipywidgets==8.1.1

thomasXwang avatar Jun 03 '24 15:06 thomasXwang