Closed GZR5876 closed 3 years ago
this sounds a bit like #6
Thanks @GZR5876 for reporting this. Yes I agree, this sounds like #6. I think this is because the inclusion of the javascript code in the notebook is done very simply, possibly too simply... at least it works with nbconvert, which was not the case of widgets when I gave the first try at this projet.
Anyway, if we want to make some progress on this, maybe we should find what the javascript error is? Does your browser shows anything that could help us?
Hi @neon-ninja , @GZR5876 , I think I understood the issue.
When the user imports itables
, often in the first cell, an invisible output is displayed, which loads the datatables.net library.
If the user either
then that invisible output is not there any more, and the calls to datatables.net fail.
I can think of two workarounds
execute this
from itables.javascript import load_datatables
load_datatables()
as the first cell. Save the notebook, and then reload it (I can't explain why we need to reload)
stop the kernel and clear the outputs, save the notebook, reload the notebook, and then run the notebook
Obviously we should think of a better approach. At the moment (itables version 0.2.2) I'd probably recommend loading the JS library explicitly at the top of the notebook
from itables.javascript import load_datatables
load_datatables()
I am also having a look at how Plotly do this in the context of a Jupyter Notebook. Apparently the load of the Plotly JS library is associated to the first plot. So, if you have a notebook made of two cells:
import plotly.graph_objects as go
and
go.Figure(data=[go.Bar(y=[1,3,2])])
then
So to summarize,
itables
is very visible and too easy to trigger because the loading of the JS library is done by import itables
, and the user does not expect that cell to have an important outputload_datatables()
This should be fixed now in itables>=0.3.0
. Please note that the initialization now works a bit differently - to display all the tables interactively, you should start your notebook with
from itables import init_notebook_mode
init_notebook_mode(all_interactive=True)
I appear to be having the exact same issue, this originally worked, but having restarted the kernel, the outputs are all blank. I'm using itables==0.3.0 and JupyterHub. I have the following 3 blocks in a fresh notebook and it works fine, yet in an existing notebook even after a kernel restart, there is no output as described above.
from itables import init_notebook_mode
init_notebook_mode(all_interactive=True)
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris
Existing notebook with no output even after restart:
Fresh notebook seems to work OK:
Hi @mattwatkinscs , thank you for your input. May I ask what is the outcome if a) you restart the kernel and b) you reload the notebook (Ctrl+R)? Thanks!
Hi @mattwatkinscs , thank you for your input. May I ask what is the outcome if a) you restart the kernel and b) you reload the notebook (Ctrl+R)? Thanks!
I have the exact same issue. For me it is both a and b. It only works again if I shut down the kernel, close the tab for the notebook and reopen the notebook again in a new tab.
When I test following codes on a new created jupyternote book, it works. however, once the note book is saved and reopen again, it no longer works. (the df table not shown, only the column headers are displayed).
Tried clear browser cache, restart kernal, restart pc, cant solve the problem. Any one has any idea on this?
Test code: import itables.interactive import world_bank_data as wb
df = wb.get_countries() df