Closed rhajou closed 1 year ago
Confirmed: with notebook 6.5.2, the Nbextensions
dashboard menu does not appear. This is particularly problematic for my MacBook Pro on ARM because there is no native option to downgrade to 5.6.0 using Conda. (I could do this under Rosetta, but this is a pain.)
I was a little confused between jupyter_contrib_nbextensions
and jupyter_nbextensions_configurator
. I am able to activate some extensions (I tested jupyter-black) with notebook==6.5.2
, jupyter_contrib_nbextensions==0.7.0
, and python==3.10.9
as follows:
conda create -y -n tst -c conda-forge jupyter_contrib_nbextensions black jupyter-black
conda activate tst
jupyter nbextension enable jupyter-black-master/jupyter-black
or
conda create -y -n tst "python~=3.10"
conda activate tst
pip install jupyter_contrib_nbextensions black
jupyter nbextension install https://github.com/drillan/jupyter-black/archive/master.zip --sys-prefix
jupyter nbextension enable jupyter-black-master/jupyter-black
but still get a lot of validation errors and no visible configurator (visiting :
$ jupyter nbextension list
Known nbextensions:
config dir: /Users/mforbes/.conda/envs/tst/etc/jupyter/nbconfig
notebook section
nbextensions_configurator/config_menu/main enabled
- Validating: problems found:
- require? X nbextensions_configurator/config_menu/main
contrib_nbextensions_help_item/main enabled
- Validating: OK
tree section
nbextensions_configurator/tree_tab/main enabled
- Validating: problems found:
- require? X nbextensions_configurator/tree_tab/main
config dir: /Users/mforbes/.jupyter/nbconfig
notebook section
jupyter-black-master/jupyter-black enabled
- Validating: OK
Perhaps this is an issue with jupyter_nbextensions_configurator instead? Visiting http://localhost:8888/nbextensions/ give a blank page with the following errors in the JS console:
I was also struggling with this problem, so I did a bit of digging. It has to do with this specific line: https://github.com/ipython-contrib/jupyter_contrib_nbextensions/blob/a186b18efaa1f55fba64f08cd9d8bf85cba56d25/src/jupyter_contrib_nbextensions/nbextensions/python-markdown/main.js#L16
Looking at https://github.com/jupyter/nbclassic/pull/201, we can see that a recent upgrade was done, and marked
is now served with a different filename:
https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/base/js/markdown.js#L9
https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/tree/js/notebooklist.js#L14
To fix this problem temporarily, you can make a copy of marked.umd.js
with the filename marked.js
. If you're working with conda
, this file can be found at YOUR_CONDA_INSTALL_LOCATION/envs/YOUR_ENV_NAME/lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js
. Haven't used pip
in a long time, but it should be a similar path starting from site-packages/...
.
Hope this helps.
I was also struggling with this problem, so I did a bit of digging. It has to do with this specific line:
Looking at jupyter/nbclassic#201, we can see that a recent upgrade was done, and
marked
is now served with a different filename: https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/base/js/markdown.js#L9 https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/tree/js/notebooklist.js#L14To fix this problem temporarily, you can make a copy of
marked.umd.js
with the filenamemarked.js
. If you're working withconda
, this file can be found atYOUR_CONDA_INSTALL_LOCATION/envs/YOUR_ENV_NAME/lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js
. Haven't usedpip
in a long time, but it should be a similar path starting fromsite-packages/...
.Hope this helps. It DID help, thanks a bunch for posting. Chased this one for a couple of hours before stumbling on your post.
I was also struggling with this problem, so I did a bit of digging. It has to do with this specific line:
Looking at jupyter/nbclassic#201, we can see that a recent upgrade was done, and
marked
is now served with a different filename: https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/base/js/markdown.js#L9 https://github.com/jupyter/nbclassic/blob/51b475bdf94e01ce84913800b19559eaf49a7d24/nbclassic/static/tree/js/notebooklist.js#L14To fix this problem temporarily, you can make a copy of
marked.umd.js
with the filenamemarked.js
. If you're working withconda
, this file can be found atYOUR_CONDA_INSTALL_LOCATION/envs/YOUR_ENV_NAME/lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js
. Haven't usedpip
in a long time, but it should be a similar path starting fromsite-packages/...
.Hope this helps.
I am wondering if you are willing to share a bit more about how you located this bug? I had been struggling with this problem for some time and your solution was very helpful. I would love to learn more about your thought process.
Thanks, Jiankun
It's a bit off-topic, but sure. Note that I had not seen the source code for jupyter_contrib_nbextensions
prior to this, so most of this is the result of trial and error.
When you open the notebook page after running jupyter notebook
with jupyter_contrib_nbextensions
installed, you'll notice that an error occurs in the console window:
[W 17:20:38.083 NotebookApp] 404 GET /static/components/marked/lib/marked.js?v=20230302172027 (127.0.0.1) 11.730000ms referer=http://localhost:8888/tree
404 GET
indicates that the notebook page (http://localhost:8888/tree
) is requesting for marked.js
, but it's not available. static
indicates that the resource is local. You can confirm this by opening the Debugger menu in Chrome (or equivalent in Firefox):
Indeed, marked.js
is missing from the tree of files that are available.
We know that this wasn't a problem until recently, so something resembling marked.js
should exist. There's two things we can do:
marked
. Something on the notebook page is requesting for it, so where is it being requested?
# CONDA_INSTALL/envs/CONDA_ENV
$ grep -r "marked" *
...
conda-meta/nbclassic-0.5.2-pyhd8ed1ab_0.json: "lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js",
conda-meta/nbclassic-0.5.2-pyhd8ed1ab_0.json: "_path": "site-packages/nbclassic/static/components/marked/lib/marked.umd.js",
...
marked
.
# CONDA_INSTALL/envs/CONDA_ENV
$ find . -name "marked*"
./lib/python3.10/site-packages/nbclassic/static/components/marked
./lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js
./share/qt/3rd_party_licenses/qtwebengine/src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/marked
We've found the path to marked
: CONDA_INSTALL/envs/CONDA_ENV/lib/python3.10/site-packages/nbclassic/static/components/marked/lib/marked.umd.js
. Looking at the path and comparing it to the path indicated in the 404 GET
request, we can reasonably expect that this is where marked.js
should also be. marked.umd.js
probably contains the content we want, so try making a copy of it as marked.js
instead, and it works!
However, the story's not over yet. This is path is unusual, since it belongs to the nbclassic
package, not jupyter_contrib_nbextensions
. Time to turn to the source code.
Searching for marked
in the jupyter_contrib_nbextensions
repository on GitHub:
Searching for marked
in the nbclassic
repository on GitHub:
...and there's the culprit.
Thank you for taking the time to explain your thought process in such detail. Your insights were helpful in understanding how to locate the bug. I really appreciate your willingness to share your expertise and help others in the community. Thanks again!
The workaround mentioned above only partly worked for me (the Nbextensions tab was shown but no extensions were actually working). Instead, I trided downgrading nbclassic
from 0.5.2 to 0.4.8 by simply $ conda install nbclassic=0.4.8
as per this post: https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator/issues/151#issue-1603305295
It seems everything is working, though not entirely sure if this is the right way...
@dynamicsoar Thanks! This is the key. I believe that the issue lies fully with the configurator (https://github.com/Jupyter-contrib/jupyter_nbextensions_configurator/issues/151) and not with jupyter_contrib_nbextensions
. Pinning nbclassic<0.5
resolves the issue, even with notebook 6.5.2 and 6.5.3:
conda create -n tst "python~=3.11"
conda activate tst
pip install jupytext RISE jupyter_contrib_nbextensions black "nbclassic<0.5"
Everything works for me with this. Upgrading nbclassic
causes the configurator to break because the upgraded to marked 4.0.10, but jupyter_contrib_nbextensions
has not upgraded yet (issue #151).
Perhaps @rhajou could confirm, but I think this issue can be closed: further updates should be tracked there.
@dynamicsoar Thanks! This is the key. I believe that the issue lies fully with the configurator (Jupyter-contrib/jupyter_nbextensions_configurator#151) and not with
jupyter_contrib_nbextensions
. Pinningnbclassic<0.5
resolves the issue, even with notebook 6.5.2 and 6.5.3:conda create -n tst "python~=3.11" conda activate tst pip install jupytext RISE jupyter_contrib_nbextensions black "nbclassic<0.5"
Everything works for me with this. Upgrading
nbclassic
causes the configurator to break because the upgraded to marked 4.0.10, butjupyter_contrib_nbextensions
has not upgraded yet (issue #151).Perhaps @rhajou could confirm, but I think this issue can be closed: further updates should be tracked there.
This is the correct way to solve this issue. I am closing this issue
it is really helpful, thank you!
Hello,
I am trying to install jupyter_contrib_nb_extensions in my venv environment with the following versions:
using these commands for the installtion of jupyter_contrib_nbextensions:
But the extensions would not appear in jupyter notebook. I tried reloading the venv environment (deactivate/activate) reload vs code, reload multiple times the jupyter notebook server and it didn't work.
The only solution that worked is downgrading notebook from 6.5.2 to 5.6.0